2015-02-11 170 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>