Получить значение xelement с помощью пространства имен xdocument в c # - PullRequest
2 голосов
/ 06 июля 2011

Я не могу получить значение xelement, если xdocument имеет атрибут пространства имен. Вот мой код:

string ts = @"<TestNameSpace xmlns='http://www.w3.org/2001/XMLSchema'>
  <requestID>
    <client>xxxx</client>
    <id>yyyy</id>
    <timestamp>zzzz</timestamp>
 </requestID>
</TestNameSpace>";
XDocument doc1 = XDocument.Parse(ts);
XElement reqID = doc1.Root.Element("requestID");

Моя проблема в том, что reqID возвращает нулевые данные в приведенном выше коде. Если без атрибута xmlns или пустого значения xmlns, reqID получит правильные данные.

Может кто-нибудь сказать мне, что не так в приведенном выше коде?

Спасибо за аванс.

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Сначала нужно определить XNamespace:

XNamespace ns = "http://www.w3.org/2001/XMLSchema";

и затем используйте это в своем запросе:

XDocument doc1 = XDocument.Parse(ts);
XElement reqID = doc1.Root.Element(ns + "requestID");
0 голосов
/ 06 июля 2011

Попробуй так:

string xml = 
@"<TestNameSpace xmlns='http://www.w3.org/2001/XMLSchema'>
  <requestID>
    <client>xxxx</client>
    <id>yyyy</id>
    <timestamp>zzzz</timestamp>
 </requestID>
</TestNameSpace>";
var doc = XDocument.Parse(xml);
XNamespace ns = "http://www.w3.org/2001/XMLSchema";
var reqID = doc.Root.Element(ns + "requestID");
...