解析xml字符串并获取值

解析xml字符串并获取值

问题描述:

我需要在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

有几个是要考虑的事情:

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

打印出 “实际值”