我可以使用此代码读取我的本地.xml文件。我的问题是,如果我的所有元素都具有唯一的id(作为子节点)而不循环整个xml文件,是否有可能获得某些xml元素?例如,获取id = 3的项目的名称和年份。
$.ajax({
type: "GET",
url: "Cars.xml",
dataType: "xml",
success: getDataFromXml
});
function getDataFromXml(xml){
$(xml).find("Car").each(function(){
....
}
XML
<Cars>
<Car>
<Id>1</Id>
<Name>Tornado</Name>
<Model>Ferrari</Model>
<Year>1943</Year>
</Car>
<Car>
<Id>2</Id>
<Name>Tiger</Name>
<Model>Ferrari</Model>
<Year>1943</Year>
</Car>
<Car>
<Id>3</Id>
<Name>Cat</Name>
<Model>Ferrari</Model>
<Year>1943</Year>
</Car>
</Cars>
答案 0 :(得分:1)
var xmlDoc = $.parseXML(xml),
$xml = $( xmlDoc ),
$cars = $xml.find( "Car" );
这样做。 For more information, look here
您可以使用find
和has
来获取元素。首先find
元素car
,然后检查元素has
id
是否包含3
作为值。这将为您提供$.find( "Car" ).has( "Id:contains('3')" )
。我为您做了一个示例,它将Car Element
与Id=3
一起返回。现在您不需要遍历所有“Car-Elements”。
var xml = "<Cars><Car><Id>1</Id><Name>Tornado</Name><Model>Ferrari</Model><Year>1943</Year></Car><Car><Id>2</Id><Name>Tiger</Name><Model>Ferrari</Model><Year>1943</Year></Car><Car><Id>3</Id><Name>Cat</Name><Model>Ferrari</Model><Year>1943</Year></Car></Cars>";
var xmlDoc = $.parseXML(xml);
var $xml = $( xmlDoc );
var $cars = $xml.find( "Car" ).has( "Id:contains('3')" );
console.log($cars[0].innerHTML)
.as-console-wrapper {
min-height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>