2011-07-06 42 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