2011-07-06 47 views
2

如果xdocument具有名称空间属性,我无法获得xelement值。这里是我的代码:用c命名空间xdocument获取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返回上述代码中的空数据。如果没有xmlns属性或xmlns为空值,则reqID将获得正确的数据。

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

感谢提前。

回答

1

你需要首先定义一个XNamespace

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

,然后用它在您的查询:

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

谢谢。它正在工作 – KMX

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

谢谢。这是工作 – KMX