从XML获取特定数据

时间:2017-02-28 15:12:19

标签: javascript jquery xml-parsing

我可以使用此代码读取我的本地.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>

1 个答案:

答案 0 :(得分:1)

var xmlDoc = $.parseXML(xml),
$xml = $( xmlDoc ),
$cars = $xml.find( "Car" );

这样做。 For more information, look here

您可以使用findhas来获取元素。首先find元素car,然后检查元素has id是否包含3作为值。这将为您提供$.find( "Car" ).has( "Id:contains('3')" )。我为您做了一个示例,它将Car ElementId=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>