【问题标题】:Parsing xml to get the all nodes between two nodes解析xml以获取两个节点之间的所有节点
【发布时间】:2019-04-19 05:56:30
【问题描述】:

您好,我有一个如下的 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>

所以我试图在

&lt;Err type="Start"/&gt; .... &lt;Err type="End"/&gt;

然后提取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  ?????

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

【问题讨论】:

    标签: javascript jquery xml-parsing siblings


    【解决方案1】:

    不确定 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));
    

    输出将是,

    {
        "root": {
            "xxx": [
                {
                    "txt": "{{"
                },
                {
                    "txt": "f"
                },
                {
                    "txt": "irst_name"
                },
                {
                    "txt": "}}"
                }
            ],
            "Err": [
                {
                    "type": "Start"
                },
                {
                    "type": "End"
                }
            ]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2018-07-11
      相关资源
      最近更新 更多