【问题标题】:Get specific data from XML从 XML 中获取特定数据
【发布时间】:2017-07-19 15:18:20
【问题描述】:

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

【问题讨论】:

标签: javascript jquery xml-parsing


【解决方案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。现在您不需要遍历所有“汽车元素”。

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%;
}
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 如何只访问 id 为 3 的元素?
  • 我不认识你的xml,所以我不知道如何选择它。也许在您的问题中添加一个 sn-p,并告诉我您是否更新了它。
  • 给你,我怎样才能在不循环整个 xml 的情况下加入 id=3 的汽车的所有元素?
  • 我更新了我的答案。看看这个。这是你需要的吗?
  • 是的,非常感谢 :) 现在我能够找到特定的汽车元素。如何获取同一元素的 name 属性以及同一元素中的上一层属性。汽车[0]的含义是什么?如果我更改号码,我看不出任何变化。
猜你喜欢
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
相关资源
最近更新 更多