2014-04-17 70 views
0

我想收集具有名稱空間的RequestID元素,但我不知道如何。如何使用XDocument和Linq將元素的值更改爲XML

this.XmlString = "<?xml version=\"1.0\" 
encoding=\"utf-8\"?><MethodNameRq xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><RequestID 
xmlns=\"http://Mynamespace\">573-348976-428697-346</RequestID ></MethodNameRq>"; 

var doc = XDocument.Parse(this.XmlString); 

this.RequestId = (string)doc.Descendants().Where(n => n.Name 
       == "RequestID ").FirstOrDefault(); 

這收集了一個空字符串RequestID。如果字符串沒有包含名稱空間,它會工作。有誰知道我如何收集RequestID元素?

+2

的命名空間的'Parse'實際工作的電話嗎?該字符串由於開頭的時間戳而似乎不是有效的xml。 – Codor

+0

謝謝@Codor,是的,它在我的機器上是有效的。我意外地複製了全部字符串。改變它以反映實際情況。 –

回答

3

你需要指定元素

XNamespace ns = "http://Mynamespace"; 

this.RequestId = (string)doc.Descendants(ns + "RequestID").FirstOrDefault(); 
+0

謝謝你的工作。我不知道XNamespace可能是一個字符串。 :) –

+0

它可能是因爲存在從字符串到XNamespace的隱式轉換。在本文檔中可以找到有關XNamespace的更多信息:[使用XML命名空間](http://msdn.microsoft.com/zh-cn/library/bb387093.aspx) –

相關問題