2015-01-09 168 views
0

我需要在C#中編寫代碼。解析xml字符串並獲取值

我得到以下包含xml元素的字符串。

**"\n      <iqn:CDFID xmlns:iqn=\"ns:iqn:cwm:1.0\">Clearance Type</iqn:CDFID>\n      <iqn:CDFName xmlns:iqn=\"ns:iqn:cwm:1.0\">Clearance Type</iqn:CDFName>\n      <iqn:CDFValue xmlns:iqn=\"ns:iqn:cwm:1.0\">THE ACTUAL VALUE</iqn:CDFValue>\n      "** 

的元素是 CDFID CDFName CDFValue

上述3個元件可以是在字符串內的任何命令。我如何識別CDFValue xml元素並提取值「THE ACTUAL VALUE」。

如何以xml方式處理字符串並獲取所需元素的值。

+0

查找[XDocument.Parse()](http://msdn.microsoft.com/en-us /library/system.xml.linq.xdocument.parse(v=vs.110).aspx) – 2015-01-09 23:30:14

+0

我試過使用它,但它抱怨超過1個根元素。我無法捕捉到這三個要素的根源。 – 2015-01-09 23:39:06

+0

用一些根元素包裝它。 – 2015-01-09 23:48:38

回答

3

有幾個是要考慮的事情:

  1. 該字符串包含多個元素,你需要或者解析它作爲文檔片段,或自己添加一個根元素是不是有效的XML文檔。

  2. 元素中有名稱空間,您需要創建名稱空間來訪問節點。

我更喜歡在XmlDocument上使用XDocument。這裏的示例代碼,以獲得實際值:

var validXml = "<root>" + value + "</root>"; 
var doc = XDocument.Parse(validXml); 

var ns = XNamespace.Get("ns:iqn:cwm:1.0"); 
Console.WriteLine(doc.Root.Element(ns.GetName("CDFValue")).Value); 

打印出 「實際值」