我會在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的注VS System.Xml.Linq的
有許多自1.0天數一直在淨XML類。這些生活(主要)在System.Xml中。在.Net 3.5中,一系列新的XML類在System.Xml.Linq下發布。我不能過分強調它們比System.Xml中的舊類更合適。我強烈建議他們去.Net程序員,尤其是剛剛進入.Net/C#的人。
我問了一個類似的問題,按照鏈接看到一個很好的討論: http://stackoverflow.com/questions/9371541/how-to-create-a-collection-from-list-of-strings-that -represents-a-directory-stru – geekzster 2012-04-03 19:16:08