2011-04-04 64 views
0

我如何解析這個XMLXML解析

<?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; 
+0

你可以發佈的XML? – 2011-04-04 19:18:32

+1

另外,不要發表評論作爲答案。張貼他們作爲評論。 – Reinderien 2011-04-04 20:28:31

回答

1

你必須有一個有效的URI引用要解析XML更換myXml

XDocument doc = new XDocument(myXml); 
List<XElement> items = doc.Descendants("ITEM"); 
string imgurl = doc.Element("RESULT").Attribute("imgURL").Value; 
+0

XDocument doc = XDocument.Parse(「<?xml version = \」1.0 \「encoding = \」utf-8 \「?>「); 列表 items = doc.Descendants(「ITEM」); string imgurl = doc.Element(「RESULT」)。Attribute(「imgURL」)。Value; – Ploetzeneder 2011-04-04 20:07:50

+0

這不起作用:http://monobin.com/__m1db521b3 – Ploetzeneder 2011-04-04 20:08:23

0

我建議對你寫了一個註解類,結果使用普通的舊XmlSerializer。 RESULT將具有一個imgURL string屬性和一個項目List<>

+0

我怎麼能用serialiser做到這一點? – Ploetzeneder 2011-04-04 19:59:05

+0

請參閱http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer.aspx。你必須創建一個名爲RESULT的類。在它內部,創建一個公共屬性,其類型是字符串,名稱是imgURL,並且具有'[XmlAttribute]'屬性,並且具有用於ITEM列表的第二個公共屬性等。 – Reinderien 2011-04-04 20:16:39

+0

http:// monobin。 com/__ m1db521b3不起作用 – Ploetzeneder 2011-04-04 20:22:54

0

也可以選擇運行XSD.exe(來自VS命令行),讓它生成一個CLR類,並使用適當的屬性來串行化/從您給出的XML格式(使用XmlSerializer類)。

你也可以手工做到這一點,但XSD會爲你做的辛苦工作。