Разбор XML, чтобы получить все узлы между двумя узлами - PullRequest
0 голосов
/ 16 ноября 2018

Привет, у меня есть xml, как показано ниже:

>     <body>
>         <p>
> 
>             <xxx>
>                 <txt>{{<txt>
>             </xxx>
>             <Err type="Start"/>
>             <xxx>
>                 <txt>f</txt>
>             </xxx>
>             <xxx>
>                 <txt>irst_name</txt>
>             </xxx>
>             <Err type="End"/>
>             <xxx>
>                 <txt>}}</txt>
>             </xxx>
>         <p> </body>

Итак, я пытаюсь получить все между

<Err type="Start"/> .... <Err type="End"/>

изатем извлеките значения узла txt, чтобы получить вывод «firstName»

, это то, что у меня есть, но немного потеряно после этого, пожалуйста, помогите.

xml =  $(mainXMl).find('p')
    $(xml).each(function(wPrgs){
       var parentEle = $(xml[wPrgs]).find('Err')
           $(parentEle).each(function(childEle){
             $.each(this.attributes, function(i, attrib) {
                   if(attrib.name === "type" && attrib.value === "Start"){
                       var end= childEle===parentEle.length-1 ? parentEle.nextSibling : parentEle[childEle+1];
                     // what goes here  ?????

                    }
               });
           });
           });
});

1 Ответ

0 голосов
/ 16 ноября 2018

Не уверен насчет структуры xml, но я думаю, что мы можем использовать такие модули, как xml2json, чтобы эффективно анализировать xml в структуре json / object и использовать json для следующих манипуляций.например, если мы рассмотрим ниже xml,

<root>  
 <xxx>
     <txt>{{</txt>
 </xxx>
 <Err type="Start"/>
 <xxx>
     <txt>f</txt>
 </xxx>
 <xxx>
     <txt>irst_name</txt>
 </xxx>
 <Err type="End"/>
 <xxx>
     <txt>}}</txt>
 </xxx>
</root>

код для преобразования в json будет,

  var jsonObj = xml2json(xmlInput);
  console.log(JSON.stringify(jsonObj, undefined, 4));

Out out будет,

{
    "root": {
        "xxx": [
            {
                "txt": "{{"
            },
            {
                "txt": "f"
            },
            {
                "txt": "irst_name"
            },
            {
                "txt": "}}"
            }
        ],
        "Err": [
            {
                "type": "Start"
            },
            {
                "type": "End"
            }
        ]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...