我想从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函数与它有关,但并不是真正理解如何使用它。
答案 0 :(得分:2)
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;
答案 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]
如果您需要整个数据为json(可以在jquery数组/对象中进行转换),您可以使用:xml2json