Синтаксический анализ XML в C # - PullRequest
0 голосов
/ 04 апреля 2011

Как я могу разобрать этот XML

<?xml version="1.0" encoding="utf-8"?>
<RESULT imgURL="www.diedomain.de/images/request_12345.jpg">
<ITEM name="test AG" status="nicht betroffen" />
<ITEM name="test3 GmbH" status="betroffen" />
<ITEM name="versuchs GmbH" status="nicht betroffen" />
<ITEM name="bergwerk GmbH" status="betroffen" />
</RESULT>

в C # проще всего? Я хочу получить все элементы в списке и тоже imgurl? Можете ли вы показать мне метод для этого? я пробовал сериализатор, но не работал.

Это тоже не сработало:

XDocument doc = XDocument.Parse("<?xml version=\"1.0\" encoding=\"utf-8\"?><RESULT imgURL=\"www.diedomain.de/images/request_12345.jpg\"><ITEM name=\"test AG\" status=\"nicht betroffen\" /><ITEM name=\"test3 GmbH\" status=\"betroffen\" /><ITEM name=\"versuchs GmbH\" status=\"nicht betroffen\" /><ITEM name=\"bergwerk GmbH\" status=\"betroffen\" /></RESULT>");
List<XElement> items = doc.Descendants("ITEM");
string imgurl = doc.Element("RESULT").Attribute("imgURL").Value;

Ответы [ 5 ]

1 голос
/ 04 апреля 2011

Вам придется заменить myXml действительной ссылкой URI на XML, который вы хотите проанализировать.

XDocument doc = new XDocument(myXml);
List<XElement> items = doc.Descendants("ITEM");
string imgurl = doc.Element("RESULT").Attribute("imgURL").Value;
0 голосов
/ 04 апреля 2011

Существует также возможность запуска XSD.exe (из командной строки VS), чтобы он генерировал класс CLR с соответствующими атрибутами для сериализации в / из заданного вами формата XML (с классом XmlSerializer).

Вы также можете сделать это вручную, но XSD сделает за вас тяжелую работу.

0 голосов
/ 04 апреля 2011

Я бы предложил использовать обычный старый XmlSerializer для аннотированного класса, который вы пишете, РЕЗУЛЬТАТ. RESULT будет иметь атрибут imgURL string и List<> элементов.

0 голосов
/ 04 апреля 2011

Посмотрите, как использовать linq to xml - http://msdn.microsoft.com/en-us/library/bb387098.aspx

0 голосов
/ 04 апреля 2011

ИМХО LINGQ to SXML - лучший выбор.Здесь много примеров здесь

...