使用C#从所有XML元素实例中获取文本

时间:2018-04-06 01:03:24

标签: c# xml

我需要解析无法预测结构的XML文件。我需要用下面标记的每个实例的内部文本填充一个字符串数组,无论它们出现在树中的哪个位置。

<SpecialCode>ABCD1234</SpecialCode>

有没有一种简单的方法可以使用c#来实现这个目标?

2 个答案:

答案 0 :(得分:2)

<强>解决方案

如果您的XML是字符串:

XDocument doc = XDocument.Parse("<SpecialCode>ABCD1234</SpecialCode>");
string[] specialCodes = doc.Descendants("SpecialCode").Select(n => n.Value).ToArray();

如果您的XML是文件:

XDocument doc = XDocument.Load("specialCodes.xml");
string[] specialCodes = doc.Descendants("SpecialCode").Select(n => n.Value).ToArray();

<强>解释

XDocument是一个方便的类,允许轻松的XML解析。您需要在项目中添加对System.Xml.Linq程序集的引用才能使用它。

  • Descendents方法将获取XML文档的所有子项,它们将处理您未知的XML结构。
  • Select方法是LINQ方法,允许我们从每个节点中选择一个属性 - 在本例中为Value
  • ToArray将IEnumerable结果从Select()转换为您想要的结果。

答案 1 :(得分:0)

XmlDocument doc = new XmlDocument();

doc.Load(FILENAME);

// IN CASE OF STRING, USE FOLLOWING
//doc.LoadXml(XAML_STRING);

XmlNodeList list = doc.DocumentElement.SelectNodes("//SpecialCode");

// prefic将从xml中获取所有SpecialCode标记。