在xml中循环并查找文本节点-jquery

9fkzdhlc  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(275)

我得到了下面的xml。

var xml = '<parent1><person><child><name>Name1</name><details><data1>123</data1><data2>34567</data2></details></child></person><person><child><name>Name2</name><details><data1>123</data1><data2>34567</data2></details></child></person></parent1>';

我需要让所有的孩子都知道。我只关心具有值的xml标记。下面是我用来循环相同的代码。

addChildren($f);

  function addChildren( $parent ) {
    $parent.children().each( function( i, child ) {
        console.log(child)
        if(child.childNodes[i] && child.childNodes[i].nodeType === 3){
//I am not getting all the text nodes here even with nodtype 3 check. 
obj.push(
{}
//Push the dynamic key and value)

addChildren( $(child) );
    });

预期产量为

{name : Name1, data1 :123, data2:34567}, {name : Name2, data1 :123, data2:34567}.

有人能告诉我如何获取键(标签)和值(文本节点)吗

fkaflof6

fkaflof61#

var xml = '<parent1><person><child><name>Name1</name><details><data1>123</data1><data2>34567</data2></details></child></person><person><child><name>Name2</name><details><data1>123</data1><data2>34567</data2></details></child></person></parent1>';

var results = $(xml).find("child").map(function () {
    var item = {
        name: $(this).children("name").text()
    };
    $(this).children("details").children().each(function () {
        item[this.localName] = $(this).text();
    });
    return item;
}).toArray();

console.log(results);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

相关问题