Специальная процедура перечисления .NET XML - PullRequest
1 голос
/ 19 сентября 2010

Я слегка поражен тем, как много способов обработки XML в .NET. В моем случае я перенесу тонну строк C и хочу обернуть свой код и оставить его в основном таким, каким он есть.У меня было это (но использую классы конечно).Я не совсем ищу самый быстрый способ, но более или менее что-то совместимое с API, который у меня был раньше.

Мой конкретный 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 и сохранить его похожим, или мне нужно создать оболочку.Если кто-нибудь знает хорошее решение для меня, пожалуйста, дайте мне знать.Я действительно хотел бы найти функции, которые позволяют мне находить объекты по их имени, а затем иметь возможность выполнять сортировку (foreach) для результата.Спасибо!

Ответы [ 2 ]

3 голосов
/ 19 сентября 2010

Я считаю, что LINQ to XML - это лучший XML API в .NET для большинства задач.

Чтобы найти все элементы-потомки с определенным именем, вы должны использовать:

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

foreach (XElement element in doc.Descendants("objectname"))
{
    string s = (string) element.Attribute("attribname");
    // ...
}
1 голос
/ 19 сентября 2010

Я не знаю о C, но .NET всегда имел XmlDocument, который является представлением XML в DOM.Для быстрой обработки вы можете использовать XmlReader.

...