jquery解析多个标签的xml

时间:2017-01-30 04:08:14

标签: javascript jquery xml parsexml

我想从XML文档中获取多个标记。我看了this question,它基本上得到了一个标签的子元素,而我想要所有的标签。使用相同的示例XML(在下面复制):

var data = 
"<root>
    <instructions>Some ins text.</instructions>
    <options>
       <option>1.png</option>
       <option>2.png</option>
       <option>3.png</option>
       <option>4.png</option>
    </options>
    <noOfOptions>4</noOfOptions>
</root>";

如何获取&#34;指令&#34;,&#34;选项&#34;的值?和&#34; noOfOptions&#34;?

我可以像这样重复三次代码:

xml = $.parseXML(data),
$data = $( xml ),
$options = $data.find("option"); // get all option nodes

xml = $.parseXML(data),
$data = $( xml ),
$instructions = $xml.find("instructions"); // get instructions

xml = $.parseXML(data),
$data = $( xml ),
$noOfOptions = $xml.find("noOfOptions"); // get noOfOptions

但这似乎并不合适。是否有正确(更有效)的方法来做到这一点?我认为.each函数与它有关,但并不是真正理解如何使用它。

2 个答案:

答案 0 :(得分:2)

&#13;
&#13;
var data = 
"<root>\
    <instructions>Some ins text.</instructions>\
    <options>\
       <option>1.png</option>\
       <option>2.png</option>\
       <option>3.png</option>\
       <option>4.png</option>\
    </options>\
    <noOfOptions>4</noOfOptions>\
</root>";


var xml = $.parseXML(data);
var $data = $( xml );

var instructions = $data.find("instructions").text();
var options = [];
$data.find("option").each(function(){
  options.push($(this).text());
});

console.log("instructions: " + instructions);
console.log("options: ", options);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果你的结构是固定的,你可以试试这个:

h = { "C6"=>
      { "G1"=>{"term_difference"=>15.1, "spread"=>7.6 },
        "G2"=>{"term_difference"=>13.7, "spread"=>7.0 },
        "G3"=>{"term_difference"=>8.2, "spread"=>6.0 },
        "G4"=>{"term_difference"=>4.0, "spread"=>3.8 },
        "G5"=>{"term_difference"=>0.9, "spread"=>1.8 }
      }
    }

控制台输出:

  

[Array [0],Array [0]] 0:Array [0]指令:&#34;一些ins文本。&#34; length:   0noOfOptions:&#34; 4&#34;选项:数组[4] proto :数组[0] 1:数组[0]长度:   2__proto__:数组[0]

Fiddle

如果您需要整个数据为json(可以在jquery数组/对象中进行转换),您可以使用:xml2json