こんにちは友人私は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
ますか。値を非表示の入力テキストボックスに保存する必要があります。
使用できるものは次のとおりです。
$(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
XML内のすべての要素を取得します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"))
そのテキストが取得されます。以下のデモ。
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>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加