[英]Parsing XML string with C#
i'm newbie with c# and i want to parse this file: 我是C#的新手,我想解析此文件:
<?xml version='1.0'?>
<methodResponse>
<params>
<param>
<value><array><data>
<value><array><data>
<value><string>1</string></value>
<value><string>Tutos</string></value>
</data></array></value>
<value><array><data>
<value><string>3</string></value>
<value><string>BEBIDAS ALCOHOL</string></value>
</data></array></value>
<value><array><data>
<value><string>6</string></value>
<value><string>conse</string></value>
</data></array></value>
<value><array><data>
<value><string>7</string></value>
<value><string>Custom Packs</string></value>
</data></array></value>
<value><array><data>
<value><string>5</string></value>
<value><string> PRODUCT</string></value>
</data></array></value>
<value><array><data>
<value><string>4</string></value>
<value><string>PRODUCT BAAT</string></value>
</data></array></value>
<value><array><data>
<value><string>2</string></value>
<value><string>GGGGGr</string></value>
</data></array></value>
</data></array></value>
</param>
</params>
</methodResponse>
I have tried with XMLnode but with this code, the count of xnList is 0. 我尝试使用XMLnode,但是使用此代码,xnList的计数为0。
XmlDocument xml = new XmlDocument();
xml.LoadXml(mensaje);
XmlNodeList xnList=xml.SelectNodes("/methodResponse/params/param/array/data");
If i write: 如果我写:
XmlNodeList xnList=xml.SelectNodes("/methodResponse/params/param");
The parameter nxList.Count is 1. I think the problem is c# doesn't recognize the labels array or data. 参数nxList.Count为1。我认为问题是c#无法识别标签数组或数据。 Can someone how solve it?
有人可以解决吗?
It seems you XML path is incorrect. 看来您的XML路径不正确。 Try:
尝试:
XmlNodeList xnList = xml.SelectNodes("/methodResponse/params/param/value/array/data");
The first item in the xnList
, should then be: xnList
的第一项应为:
<value>
<array>
<data>
<value>
<string>1</string>
</value>
<value>
<string>Tutos</string>
</value>
</data>
</array>
</value>
Also you might want to look at making the XML less complex (easier to read/use), if you have access to do this (less sub nodes). 另外,如果您有权执行此操作(减少子节点),则可能要考虑使XML的复杂度降低(更易于阅读/使用)。 As you can see to navigate through 11 nodes to get to the first real value can be quite confusing
如您所见,在11个节点之间导航以获取第一个实际值可能会造成很大的混乱
I formatted the XML so you can see how deep it really is: 我格式化了XML,以便您可以看到它的真正深度:
<?xml version='1.0' ?>
<methodresponse>
<params>
<param>
<value>
<array>
<data>
<value>
<array>
<data>
<value>
<string>1</string>
</value>
<value>
<string>Tutos</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>3</string>
</value>
<value>
<string>BEBIDAS ALCOHOL</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>6</string>
</value>
<value>
<string>conse</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>7</string>
</value>
<value>
<string>Custom Packs</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>5</string>
</value>
<value>
<string> PRODUCT</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>4</string>
</value>
<value>
<string>PRODUCT BAAT</string>
</value>
</data>
</array>
</value>
<value>
<array>
<data>
<value>
<string>2</string>
</value>
<value>
<string>GGGGGr</string>
</value>
</data>
</array>
</value>
</data>
</array>
</value>
</param>
</params>
</methodresponse>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.