2012-01-02 24 views
0

我试图通过引用另一个节点的值来获取xml节点的值。使用Javascript查询XML

这里是我的节点

<document> 
<row> 
    <DISTRICT>100</DISTRICT> 
    <BIOS>BROWN</BIOS> 
    <AREA_KM>3663.158164</AREA_KM> 
    <AREA_MI>1414.347616</AREA_MI> 
    <NAME>100</NAME> 
    <REG>1</REG> 
    <ACRES>905182</ACRES> 
    <EMU_Name>Purcell</EMU_Name> 
    <Shape_Leng>299746.4938</Shape_Leng> 
    <Shape_Area>3663158164</Shape_Area> 
    <LegalDesc>Northeast of District 151</LegalDesc> 
</row> 
</document> 

之一的片段,我想填补一些HTML从基础上#在小区现场的LegalDesc字段值。

例如,我想要显示DISTRICT==100的LegalDesc。 tempDist的价值来自一个下降的形式

这样的事情?

function dropDownAction(){ 
    var tempDist=document.HDForm.HuntingDistrict.value; 
    var tempDesc=xmlDoc.getElementsByTagName("DISTRICT")[tempDist].getAttribute("LegalDesc"); 
    document.getElementById("field2").innerHTML=tempDesc; 
} 

预先感谢

+0

是区独特的(如只有一行有区100)? – Tomas 2012-01-02 19:32:22

回答

1

我个人所有的行加载到阵列(使用区作为密钥);那么只需从数组中获得描述:

var xmlDoc = // load doc 
var elementsToLoopThru=xmlDoc.getElementsByTagName("row"); 
var rowArray = new Array(); 

// go thru all the rows 
for (var i = 0;i<elementsToLoopThru.length;i++){ 
    var district = ""; 
    var description = "No Description"; 
    var currRowChildren = elementsToLoopThru[i].childNodes; 

    // go thru all the elements of a row and get the district and description 
    for (var j = 0;j < currRowChildren.length; j++){ 
     if (currRowChildren[j].nodeName == "DISTRICT"){ 
      district = currRowChildren[j].childNodes[0].nodeValue; 
     } 
     else if (currRowChildren[j].nodeName == "LegalDesc"){ 
      description = currRowChildren[j].childNodes[0].nodeValue; 
     } 
    } 

    // if district and description found, enter them as key value pair into array 
    if (district != ""){ 
     rowArray[district] = description; 
     alert(district + ": " + description); // DELETE ME 
    } 
} 

仔细检查我的代码;我认为它应该工作,但是我很生疏导航XML

然后,当你需要获得值,只需访问rowArray[NAME_OF_DISTRICT]

这应该工作,如果:

  • 地区是独一无二的
  • 和它不是如果区受命

这里是jsfiddle:http://jsfiddle.net/RwE9s/15/

+0

运行上面的代码后,rowArray保持长度为0,永远不会填充。我的xml实际上长度为162。 elementsToLoopThru长度为162,而currRowChildren的长度只有23。这里是我的XML http://dl.dropbox.com/u/6029868/HdData.xml – snowgage 2012-01-03 15:22:30

+0

修正了,我忘了每个节点都有一个文本节点,里面放着内容 – Tomas 2012-01-03 23:05:43

+0

我会再试一次。我现在想着要走JSON的方式来保存我的数据集。 – snowgage 2012-01-04 01:53:29