Абсолютный Xpath для получения списка childnodes?

В 380 509 T 20071215

Для вышеупомянутого XML-файла мне нужен xpath для получения childnodes ниже его:

Вывод, в котором я нуждаюсь:

<exchange-documents xmlns="http://www.epo.org/exchange">
    <exchange-document country="AT" doc-number="380509" family-id="38826527" kind="T" system="ops.epo.org">
      <bibliographic-data>
        <publication-reference data-format="docdb">
          <document-id>
            <country>AT</country>
            <doc-number>380509</doc-number>
            <kind>T</kind>
            <date>20071215</date>
          </document-id>
        </publication-reference>  
        <parties>
          <applicants>
          </applicants>
          <inventors>
          </inventors>
        </parties>
      </bibliographic-data>
    </exchange-document>

Я использующий Linq-Xml для получения следующие данные:

Это - мой Xpath и код:

var list = doc1.XPathSelectElement("exchange-document");

Я не мог получить необходимый вывод. Это возвращает пустой указатель для вышеупомянутого кода. Может любой помогать на этом путем обеспечения корректного xpath retieve дочерние узлы. Еще есть ли любой другой способ получить его.

1
задан Googler 5 May 2010 в 07:33
поделиться

3 ответа

здесь проблема хорошо объяснена: Поиск в XDocument с использованием LINQ без знания пространства имен

Ваш xml имеет пространства имен. Когда вы ищете элемент, атрибут Name - это XNamae, который включает пространство имен. Поэтому вам нужно искать Name.LocalName == [theNameOfYourNode]

var xml = XElement.Parse(@"<worldpatentdata xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema"">
          <meta name=""elapsed-time"" value=""329"" xmlns=""http://ops.epo.org/\""/>
          <exchange-documents xmlns=""http://www.epo.org/exchange\"">
            <exchange-document country=""AT"" doc-number=""380509"" family-id=""38826527"" kind=""T"" system=""ops.epo.org"">
              <bibliographic-data>
                <publication-reference data-format=""docdb"">
                  <document-id>
                    <country>AT</country>
                    <doc-number>380509</doc-number>
                    <kind>T</kind>
                    <date>20071215</date>
                  </document-id>
                </publication-reference>  
                <parties>
                  <applicants>
                  </applicants>
                  <inventors>
                  </inventors>
                </parties>
              </bibliographic-data>
            </exchange-document>
          </exchange-documents>
        </worldpatentdata>");

        var a = xml.Descendants().First(x => x.Name.LocalName == "exchange-documents");
        Console.WriteLine(a);
1
ответ дан 3 September 2019 в 00:46
поделиться

Введите полный путь для получения xpath.

0
ответ дан 3 September 2019 в 00:46
поделиться

Ваш XML-документ использует пространства имен XML, поэтому вам нужно указать их в выражении XPath. О том, как это сделать, см. следующее:

1
ответ дан 3 September 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: