简体   繁体   English

是否可以在Javascript xpath中获取父节点属性的值

[英]Is it possible to get the value of parent node attribute in Javascript xpath

I have the code below working well. 我下面的代码运行良好。 It searches my xml file for all the "outcome_text" nodes of a particular branch (the 'str' branch), then writes the text to a table. 它在我的xml文件中搜索特定分支(“ str”分支)的所有“ outcome_text”节点,然后将文本写入表中。 Problem is, I would really like to get the value of the parent nodes attribute as well (the overall id value). 问题是,我真的也想获取父节点属性的值(整体id值)。 That way my table row would be two columns: OVerall ID and Outcome. 这样,我的表行将是两列:OVerall ID和结果。 I can do it no problem in VB/asp xpath, but trying to make a client side version for mobile. 我可以在VB / asp xpath中做到这一点,但是尝试制作移动客户端版本。 here is a snippet of the xml: 这是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>

and here is the code: (ignore the IE bits--it will be on Android and IOS only) 这是代码:(忽略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;
}

Seems to me something like: 在我看来是这样的:

ind = result.parentNode.getAttribute("id")

should work. 应该管用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM