xQuery один XMLNode в коллекции XMLNodes - PullRequest
0 голосов
/ 04 августа 2011

У меня есть XML-файл, который содержит узел с именем Standplaatsen. Я могу получить коллекцию этих узлов. Затем я хочу развернуть его в этой коллекции с помощью цикла foreach и проверить каждый отдельный узел в коллекции узлов.

foreach (XmlNode XMLNode in XMLNodes)
{
   //This will be found nicely
   string test1 = XMLNode["bag_LVC:identificatie"].InnerXml.ToString();
   //This will cause a NULL reference with or without a leading '//'
   string test2 = XMLNode["bag_LVC:gerelateerdeAdressen/bag_LVC:hoofdadres/bag_LVC:identificatie"].InnerXml.ToString();
   // This will get the element BUT it will only get the same
   // first element whatever node is procesed
   string xPathExpression = "//bag_LVC:gerelateerdeAdressen/bag_LVC:hoofdadres/bag_LVC:identificatie";
   XmlElement Hoofdadres = (XmlElement)XMLNode.SelectSingleNode(xPathExpression, ns);
}

Кто-нибудь знает, как получить правильное значение элемента hoofdadres\identificatie каждого узла.

Пример XML:

     <xb:antwoord>
      <xb:producten>
      <product_LVC:LVC-product>
        <bag_LVC:Standplaats>
          <bag_LVC:gerelateerdeAdressen>
            <bag_LVC:hoofdadres>
              <bag_LVC:identificatie>1883200000020771</bag_LVC:identificatie> 
            </bag_LVC:hoofdadres>
           </bag_LVC:gerelateerdeAdressen>
         <bag_LVC:identificatie>1883030000000010</bag_LVC:identificatie> 
       </bag_LVC:Standplaats>

       <bag_LVC:Standplaats>
          <bag_LVC:gerelateerdeAdressen>
            <bag_LVC:hoofdadres>
              <bag_LVC:identificatie>1883200000015663</bag_LVC:identificatie> 
            </bag_LVC:hoofdadres>
          </bag_LVC:gerelateerdeAdressen>
        <bag_LVC:identificatie>1883030000000011</bag_LVC:identificatie> 
       </bag_LVC:Standplaats>
       </product_LVC:LVC-product>
       </xb:producten>
       </xb:antwoord>

Обновление

Когда я использую //*:hoofdadres/*:identificatie, тогда я получаю исключение

//*:hoofdadres/*:identificatie' has an invalid token.

Меня беспокоит та часть:

// This will get the element BUT it will only get the same
// first element whatever node is processed
string xPathExpression = "//bag_LVC:gerelateerdeAdressen/bag_LVC:hoofdadres/bag_LVC:identificatie";
XmlElement Hoofdadres = (XmlElement)XMLNode.SelectSingleNode(xPathExpression, ns);

1 Ответ

0 голосов
/ 05 августа 2011

в чистом xquery:

doc()//\*:hoofdadres/\*:identificatie
...