在c#中使用namespaced xdocument获取xelement值

时间:2011-07-06 17:03:01

标签: c#-4.0 linq-to-xml xml-namespaces

如果xdocument具有namespace属性,则无法获取xelement值。这是我的代码:

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在上面的代码中返回null数据。如果没有xmlns属性或xmlns的空值,则reqID将获得正确的数据。

有谁能告诉我上面的代码有什么问题?

感谢提前。

2 个答案:

答案 0 :(得分:1)

您需要先定义XNamespace

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

然后在您的查询中使用它:

XDocument doc1 = XDocument.Parse(ts);
XElement reqID = doc1.Root.Element(ns + "requestID");

答案 1 :(得分:0)

试试这样:

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");