2015-02-11 83 views
1

我是新手,C#和我要分析此文件:解析XML字符串与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> 

我试图与XmlNode的,但与此代码,xnList的计数为0。

XmlDocument xml = new XmlDocument(); 
xml.LoadXml(mensaje); 
XmlNodeList xnList=xml.SelectNodes("/methodResponse/params/param/array/data"); 

如果我写:

XmlNodeList xnList=xml.SelectNodes("/methodResponse/params/param"); 

参数nxList.Count是1 我认为这个问题是C#不[R确认标签阵列或数据。 有人能解决吗?

回答

2

看来你的XML路径是不正确的。尝试:

XmlNodeList xnList = xml.SelectNodes("/methodResponse/params/param/value/array/data"); 

xnList中的第一项,然后应是:

<value> 
    <array> 
     <data> 
      <value> 
       <string>1</string> 
      </value> 
      <value> 
       <string>Tutos</string> 
      </value> 
     </data> 
    </array> 
</value> 

你也可能想看看是使XML那么复杂(更易于阅读/使用),如果你有访问做到这一点(较少的子节点)。正如你所看到的,通过11个节点导航去的第一个真正的价值可能会相当混乱

我格式化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>