簡體   English   中英

遍歷Javascript dom,細節作為屬性

[英]traverse though Javascript dom, details as attributes

我有一個結構如下的 XML 文件。 所有數據都保存為屬性(不幸的是我不能改變結構)。 我正在將其讀入 Javascript。 我有以下代碼,但我在將每個工廠與代理相關聯時遇到了麻煩。 我試過 ChildNodes 但這似乎不適用於屬性。

    parser = new DOMParser();
    xmlDoc = parser.parseFromString(reader.result,"text/xml");

    var i;
    for (i = 0;i<xmlDoc.getElementsByTagName("Agent").length;i++)
    {
        console.log(xmlDoc.getElementsByTagName("Agent")[i].attributes);

        for (....)//some for loop to look at every plant for that agent.
        {

        }
    }

和 XML 數據:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <Agent Id="1" Type="typeA" Area="Area1">
  <Portfolio>
   <Plant Type="Type1" SubType="SubType1" />
   <Plant Type="Type2" SubType="SubType2" />
 </Portfolio>
</Agent>
<Agent Id="2" Type="typeB" Area="Area2">
 <Portfolio>
  <Plant Type="Type3" SubType="SubType3" />
  <Plant Type="Type4" SubType="SubType4" />  
 </Portfolio>
</Agent>
</root>

您可以簡單地將標簽名稱為<Plant>所有元素嵌套在您的<Agent>標簽中。

parser = new DOMParser();
xmlDoc = parser.parseFromString(xml,"text/xml");

// traverse agents
for (let agent of xmlDoc.getElementsByTagName("Agent"))
{
    //console.log(agent.attributes);

    // traverse plants
    for (let plant of agent.getElementsByTagName("Plant")) {
      console.log('agent:', agent.attributes, 'plant:', plant.attributes);
    }
}

在這里查看一個活生生的例子: jsfiddle

 xml=`<?xml version="1.0" encoding="utf-8"?> <root> <Agent Id="1" Type="typeA" Area="Area1"> <Portfolio> <Plant Type="Type1" SubType="SubType1" /> <Plant Type="Type2" SubType="SubType2" /> </Portfolio> </Agent> <Agent Id="2" Type="typeB" Area="Area2"> <Portfolio> <Plant Type="Type3" SubType="SubType3" /> <Plant Type="Type4" SubType="SubType4" /> </Portfolio> </Agent> </root>` parser = new DOMParser(); xmlDoc = parser.parseFromString(xml,"text/xml"); // traverse agents for (let agent of xmlDoc.getElementsByTagName("Agent")) { // console.log(agent.attributes); // traverse plants for (let plant of agent.getElementsByTagName("Plant")) { console.log('agent type:', agent.getAttribute('Type'),'agent Area:', agent.getAttribute('Area')); console.log('plant type:',plant.getAttribute('Type'),' plant SubType:',plant.getAttribute('SubType')) } }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM