我将使用 System.Xml.Linq 中的 XLINQ 类(这是您需要引用的命名空间和程序集)。将 XML 加载到 XDocument 中:
XDocument doc = XDocument.Parse(someString);
接下来,您可以使用递归或伪递归循环来遍历子节点。您可以选择子节点,例如:
//if Directory is tag name of Directory XML
//Note: Root is just the root XElement of the document
var directoryElements = doc.Root.Elements("Directory");
//you get the idea
var fileElements = doc.Root.Elements("File");
变量 directoryElements 和 fileElements 将是 IEnumerable 类型,这意味着您可以使用诸如 foreach 之类的东西来循环遍历所有元素。构建元素的一种方法是这样的:
List<MyFileType> files = new List<MyFileType>();
foreach(XElelement fileElement in fileElements)
{
files.Add(new MyFileType()
{
Prop1 = fileElement.Element("Prop1"), //assumes properties are elements
Prop2 = fileElement.Element("Prop2"),
});
}
在示例中,MyFileType 是您创建的用于表示文件的类型。这是一种蛮力攻击,但它可以完成工作。
如果你想使用 XPath,你需要使用 System.Xml.XPath。
System.Xml 与 System.Xml.Linq 的注意事项
自 1.0 以来,.Net 中有许多 XML 类。这些(大部分)存在于 System.Xml 中。在 .Net 3.5 中,在 System.Xml.Linq 下发布了一组美妙的新 XML 类。我不能过分强调它们比 System.Xml 中的旧类好得多。我强烈推荐给任何 .Net 程序员,尤其是刚接触 .Net/C# 的人。