Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取父元素属性值_Javascript_Xml_Xpath - Fatal编程技术网

Javascript 获取父元素属性值

Javascript 获取父元素属性值,javascript,xml,xpath,Javascript,Xml,Xpath,这是我的xml文档:- <root> <child_1 entity_id = "1" value="india"> <child_2 entity_id = "2" value="gujarat"> <child_3 entity_id = "3" value="Ahemdabad"/> <child_4 entity_id = "4" value="Surat"/&g

这是我的xml文档:-

<root>
    <child_1 entity_id = "1" value="india">
        <child_2 entity_id = "2" value="gujarat">
            <child_3 entity_id = "3" value="Ahemdabad"/>
            <child_4 entity_id = "4" value="Surat"/>
            <child_5 entity_id = "5" value="Rajkot"/>           
        </child_2>
    </child_1>
</root>

这是我的javascript html代码:-

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script>
        var xml;
        var ind_sex;
        $.get(
        "code.xml",
        null,
        function (data) {
            xml = data;
        },
        "xml"
    );
        function get_list() {
            var city = $('#name').val();
            alert(city);
            var xPath = '//*[@value = "city"]' + 
                            '/../../@value';

          var iterator = xml.evaluate(xPath, xml.documentElement, null,
                XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
            var thisNode = iterator.iterateNext();
            var str = '';
            while (thisNode) {
                if (str) {
                    str += ', ';
                }
                str += thisNode.textContent;
                thisNode = iterator.iterateNext();
            }

            $("#result").text(str);
        }
    </script>
</head>
<body>
<input type="text" id="name"></input>
    <input type="button" name="button" value="Search" onclick="get_list()">
    <div id="result">
    </div>
</body>
</html>

var-xml;
性别变异;
美元(
“code.xml”,
无效的
功能(数据){
xml=数据;
},
“xml”
);
函数get_list(){
var city=$('#name').val();
警报(城市);
var xPath='/*[@value=“city”]'+
“/../../@value”;
var iterator=xml.evaluate(xPath,xml.documentElement,null,
XPathResult.UNORDERED\节点\迭代器\类型,null);
var thisNode=iterator.iterateNext();
var-str='';
while(此节点){
如果(str){
str+=',';
}
str+=thisNode.textContent;
thisNode=iterator.iterateNext();
}
$(“#结果”).text(str);
}
在这里,我尝试在文本框中输入城市名称,如果它在我的xml文件中匹配,则返回我所在的国家名称
我没有得到任何错误,但没有得到结果。

我认为xPath中的问题请帮助我解决这个问题。

据我记忆所及,列表不是这样工作的。。。它们是与给定值关联的变量,因此更像:

list($a,$b,$c)=[1,2,3]

不管怎样,你为什么不看看页面中的“列表”部分呢?它是Redis推荐的PHP客户机之一,其示例非常清楚

使用

var xPath = '//*[@value = "' + city + '"]/../../@value';
var xPath = '//*[*/*[@value = "' + city +  ']]/@value';
等效表达式为

var xPath = '//*[@value = "' + city + '"]/../../@value';
var xPath = '//*[*/*[@value = "' + city +  ']]/@value';

显然,在有人试图回答你的问题后,你用了完全不同的东西来代替它。为什么不开始一个新问题呢?我完全同意@Barmar。不建议在截止日期前一天完全更改问题。如果你有新问题,请问一个新问题。@DimitreNovatchev,依我看,它们不是等价的。我宁愿使用第二个版本,因为它不需要双向走树(也朝向树根)。我不确定是否还能找到任何文档,但有消息说xpath引擎的旧实现存在问题。此外,我不太确定你是否真的要使用asterix。点不应该在其中,比如
var xPath='/./././.[@value=“'+city+']]/@value';
?比较。@KrzysztofJabłoński,是的,它们是等价的——它们选择完全相同的属性。“星号”
/*
表示(在子轴上)上下文节点的任何元素子元素。类似地,
/*
表示上下文节点的任何子元素。任何兼容的XPath实现都必须支持这两个表达式。另一方面,
/.
表示作为上下文节点或上下文节点的子节点的任何节点(不仅仅是元素节点)。