朋友们,我在XML文件中有以下代码。我需要根据<x> <metadata> <field><name>work</name><value>
代码值找到y
的值。
<x>
<y>12</y>
<metadata>
<field>
<name>1234</name>
<value>qqqqqq</value>
</field>
<field>
<name>work</name>
<value>true</value>
</field>
</metadata>
</X>
<x>
<y>14</y>
<metadata>
<field>
<name>5678</name>
<value>wwwww</value>
</field>
<field>
<name>work</name>
<value>false</value>
</field>
</metadata>
</X>
y=14;
$.ajax({
type: "GET" ,
url: "../JRF/JRF.xml" ,
dataType: "xml" ,
success: function(xml) {
$(xml).find('x').each(function(){
if(y == $(this).find('y').text())
{
?????????
}
});
}
});
您可以帮我获取<value>
true
或false
的值,我必须将该值存储在隐藏的输入文本框中。
答案 0 :(得分:2)
您可以使用以下内容:
$(xml).find('x').each(function() {
if (y == $(this).find('y').text()) {
var trueOrFalse = $(this).find('metadata field:has(name:contains("work")) value').text();
console.log('work for ' + y + ' is ' + trueOrFalse);
}
});
基本上,它:
$(xml).find('x').each(function() {
x
元素if (y == $(this).find('y').text()) {
x
有一个y
子元素,其文本内容等于y
$(this).find('metadata field:has(name:contains("work")) value').text();
$(this).find('metadata field')
field
元素的metadata
元素$(this).find('metadata field:has(name:contains("work"))')
field
孩子name
内容"work"
$(this).find('metadata field:has(name:contains("work")) value').text();
value
field:has(name:contains("work"))
的{{1}}元素,并获取其文字。下面的演示。
var xml = `<root>
<x>
<y>12</y>
<metadata>
<field>
<name>1234</name>
<value>qqqqqq</value>
</field>
<field>
<name>work</name>
<value>true</value>
</field>
</metadata>
</x>
<x>
<y>14</y>
<metadata>
<field>
<name>5678</name>
<value>wwwww</value>
</field>
<field>
<name>work</name>
<value>false</value>
</field>
</metadata>
</x>
</root>
`;
var y = 14;
$(xml).find('x').each(function() {
if (y == $(this).find('y').text()) {
var trueOrFalse = $(this).find('metadata field:has(name:contains("work")) value').text();
console.log('work for ' + y + ' is ' + trueOrFalse);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
而且,如果你是一个单行:
$(xml).find('x:has(y:contains("'+ y +'")) metadata field:has(name:contains("work")) value').text();
演示:
var xml = `<root>
<x>
<y>12</y>
<metadata>
<field>
<name>1234</name>
<value>qqqqqq</value>
</field>
<field>
<name>work</name>
<value>true</value>
</field>
</metadata>
</x>
<x>
<y>14</y>
<metadata>
<field>
<name>5678</name>
<value>wwwww</value>
</field>
<field>
<name>work</name>
<value>false</value>
</field>
</metadata>
</x>
</root>
`;
var y = 14;
var trueOrFalse = $(xml).find('x:has(y:contains("'+ y +'")) metadata field:has(name:contains("work")) value').text();
console.log('work for ' + y + ' is ' + trueOrFalse);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>