2010-09-19 39 views
1

在.NET中處理XML有多少種方法讓我感到不知所措。在我的例子中,我正在移植大量的C行,並且我想包裝我的代碼並保持它基本上是我的方式(但使用課程)。我並不是在尋找最快的方式,而是或多或少地與我以前的API一致。特定的.NET XML枚舉過程

我的具體API是這樣的:(這是C代碼)

XML* xml = XML_Load("file.xml"); 
XML_OBJECT* obj; 

XML_FindObjectByTagName(xml->pstFirstObject, "objectname", &obj); 

/* Go through objects at that level */ 
for (obj = obj; obj != null; obj = obj->pstNext) 
{ 
    char* s = XML_ReadAttribute_String(obj, "attribname"); 

    /* This is how I use my current API, and I would like to sorta keep it similar */ 
} 

所以,我不知道我是否可以使用.NET類之一,並保持其外觀類似,或者如果我應該做一個包裝。如果有人知道我的一個很好的解決方案,請讓我知道。我真的很想找到讓我從他們的名字中找到對象的函數,然後能夠爲結果做一個sorta(foreach)。謝謝!

回答

3

我發現LINQ to XML是.NET中用於大多數任務的最好的XML API。

要查找所有具有特定名稱的後代元素,你會使用:

XDocument doc = XDocument.Load("file.xml"); 

foreach (XElement element in doc.Descendants("objectname")) 
{ 
    string s = (string) element.Attribute("attribname"); 
    // ... 
} 
+0

輝煌。謝謝 – Kyle 2010-09-19 18:06:25

1

我不知道C,但.NET一直有XmlDocument這是XML的DOM表示。爲了快速處理,您可以使用XmlReader

+0

我以爲自己錯了,我用了很長時間。 – Aliostad 2010-09-19 17:16:48

+0

儘管你可以*用XmlDocument完成所有這一切,但是LINQ to XML使得許多事情變得簡單得多。 – 2010-09-19 17:36:56