2017-02-28 102 views
1

我能夠使用此代碼讀取我的本地.xml文件。我的問題是,是否有可能獲得某些XML元素,如果我的所有元素都有唯一的ID(作爲子節點),而無需循環整個XML文件?例如,獲取id = 3的項目的名稱和年份。從XML獲取特定數據

 $.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

您可以使用相同的[jQuery選擇(http://api.jquery.com/category/selectors/)來查找XML節點,你用它來找到HTML節點。 –

+0

看看http://stackoverflow.com/questions/7949​​752/cross-browser-javascript-xml-parsing – shrinathM

+0

給一個例子PLZ如何避免循環所有元素。 – Procode

回答

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

這將做到這一點。 For more information, look here

您可以使用findhas來獲取元素。首先你find元素car,然後你檢查元素hasid,其中包含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>

+0

如何僅使用id 3訪問元素? – Procode

+0

我不知道你的XML,所以我不知道如何選擇它。也許給你的問題添加一個片段,並告訴我你是否更新了它。 – DomeTune

+0

在這裏,我怎麼能加入id = 3的車的所有元素,而無需循環整個xml? – Procode