我需要解析无法预测结构的XML文件。我需要用下面标记的每个实例的内部文本填充一个字符串数组,无论它们出现在树中的哪个位置。
<SpecialCode>ABCD1234</SpecialCode>
有没有一种简单的方法可以使用c#来实现这个目标?
答案 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
标记。