我在下面的代码运行良好。它在我的xml文件中搜索特定分支的所有“outcome_text”节点('str'分支),然后将文本写入表中。问题是,我真的想获得父节点属性的值(整体id值)。这样我的表行将是两列:OVerall ID和Outcome。 我可以在VB / asp xpath中没问题,但是尝试为移动设备制作客户端版本。 这是xml的片段:
<curriculum>
<strand id="Dance">
<strand_text>Dance</strand_text>
<overalls>
<overall id="A1">
<overall_text>Creating and Presenting: apply the creative process (see pages 19-22) to the composition of simple dance phrases, using the elements of dance to communicate feelings and ideas</overall_text>
<specifics>
<specific></specific>
</specifics>
</overall>
<overall id="A2">
<overall_text>Reflecting, Responding, and Analysing: apply the critical analysis process (see pages 23-28) to communicate their feelings, ideas, and understandings in response to a variety of dance pieces and experiences</overall_text>
<specifics>
<specific></specific>
</specifics>
</overall>
</overalls>
</strand>
<strand id="visual"> . . . </strand>
</curriculum>
这里是代码:(忽略IE位 - 它将仅在Android和IOS上)
<script>
function popout() {
var gr = gradedd.options[gradedd.selectedIndex].value
var sb = subdd.options[subdd.selectedIndex].value
var str = stranddd.options[stranddd.selectedIndex].value
xml = loadXMLDoc("resources/ont/grade_" + gr + "_" + sb + ".xml");
path = "/curriculum/strand[@id='" + str + "']/overalls/overall/overall_text"
// code for IE
if (window.ActiveXObject) {
var nodes = xml.selectNodes(path);
for (i = 0; i < nodes.length; i++) {
// ddlist[0] = nodes[i].childNodes[0].nodeValue; ignore
// dropdown[dropdown.length] = new Option(ddlist[i], ddlist[i]); ignore
}
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument) {
var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
var txt = "<table border='1'><tr><th>Strand</th><th>OVERALL</th></tr>";
while (result) {
ind = str; // but would like the value of outcome node attribute
var over = result.childNodes[0].nodeValue
txt = txt + "<tr><td>" + ind + "</td><td>" + over + "</td></tr>"
result = nodes.iterateNext();
}
}
txt = txt + "</table>"
document.getElementById('outtable').innerHTML = txt;
}
答案 0 :(得分:1)
对我来说似乎是:
ind = result.parentNode.getAttribute("id")
应该有用。