2010-03-24 7 views
0

Мой XMLFILE выглядит следующим образом:Получить XPath элемента XML, используя его значение

<?xml version="1.0"?> <document-inquiry> <publication-reference data-format="docdb" xmlns="http://www.epo.org/exchange"> <document-id> <country>EP</country> <doc-number>2160088</doc-number> <kind>A1</kind> </document-id> </publication-reference>
</document-inquiry>

Для приведенного выше XML мне нужно, чтобы получить XPath конкретного элемента сказать, например, «страна элемент», как

Мой выход: "/ документ-запрос/публикация ссылка/документ-идентификатор/страна"

Мой вход: используя его значение "EP"

Это код, я попытался

doc.SelectSingleNode("/document-inquiry/publication-reference/document-id[text()='EP']"); 

I receivev нуль для приведенного выше кода.

Мне нужно получить код C#. Может ли кто-нибудь помочь мне на этом

+0

Почему # $$ # вы использовали бы заглавные буквы в своем названии? – Faruz

ответ

1
using System; 
using System.Linq; 
using System.Xml; 
using System.Xml.Linq; 
using System.Xml.XPath; 

class Program 
{ 
    static void Main() 
    { 
     var doc = XDocument.Load("D:\\xml\\neo.xml"); 
     var ns = new XmlNamespaceManager(new NameTable()); 
     ns.AddNamespace("ns", "http://www.epo.org/exchange"); 
     var elem = XDocument.Load("D:\\xml\\neo.xml") 
      .XPathSelectElement("//ns:document-id[ns:doc-number='1000']", ns); 
     if (elem != null) 
     { 
      Console.WriteLine(elem.ToString()); 
      Console.ReadLine(); 
     } 
    } 
} 

Это прекрасно работает для меня.

+0

Bump. Похоже, вы не регистрируете собственное пространство имен. Это произойдет и в других реализациях (не dotNET). –

Смежные вопросы