2015-02-11 4 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. Я думаю, что проблема с # не г ecognize массив меток или данные. Может ли кто-то решить эту проблему?

ответ

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> 
Смежные вопросы