我尝试获取元素图像属性
从这个xml文件: -
<products>
<product_id value="1">
<tab_id value="351">
<tab_name value="test1"/>
<region_timezone value="1"/>
<registrationstatus value="2"/>
<eventstatus value="2"/>
<dist_activity value="4"/>
<dist_activity value="10066"/>
<dist_activity value="10070"/>
<dist_region value="4909"/>
<dist_region value="4902"/>
<dist_region value="4905"/>
<dist_value value="55"/>
<dist_value value="342"/>
<dist_value value="86"/>
<image value="female.jpg"/>
</tab_id>
</product_id>
<product_id value="2">
<tab_id value="351">
<tab_name value="test1"/>
<region_timezone value="1"/>
<registrationstatus value="2"/>
<eventstatus value="2"/>
<dist_activity value="4"/>
<dist_activity value="10066"/>
<dist_activity value="10070"/>
<dist_region value="4912"/>
<dist_region value="4908"/>
<dist_region value="4901"/>
<dist_value value="55"/>
<dist_value value="342"/>
<dist_value value="86"/>
<image value="male.jpg"/>
</tab_id>
</product_id>
</products>
这是我的xpath: -
var xPath = '//*[local-name() = "dist_region" and ' +
' contains(concat(@value, ","), "' + array_top[i] + ',")]' +
'//Product_id[/image]/@value';
这是完整的代码: -
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
var comma='';
var node='';
var result='';
var output;
var xml;
$.get(
"product.xml",
null,
function (data) {
xml = data;
},
"xml"
);
function get_list() {
var value = "4909,4902,4905";
var array_top = value.split(',');
for(var i=0;i<array_top.length;i++)
{
var xPath = '//*[local-name() = "dist_region" and ' +
' contains(concat(@value, ","), "' + array_top[i] + ',")]' +
'//Product_id[/image]/@value';
alert(array_top[i]);
var iterator = xml.evaluate(xPath, xml.documentElement, null,
XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
var thisNode = iterator.iterateNext();
while (thisNode) {
node = thisNode.textContent;
thisNode = iterator.iterateNext();
result+= comma+node;
comma=',';
}
}
output = result;
alert(output);
}
</script>
</head>
<body>
<input type="button" name="button" value="Search" onclick="get_list()">
<div id="result">
</div>
</body>
</html>
预期O / p: -
female.jpg,male.jpg
这里我尝试从数组中逐个传递dist_region值,如果它与我的xml文件匹配则返回image元素属性值。
请检查我的x路径并建议我
谢谢。
答案 0 :(得分:2)
不确定我是否完全理解了这个问题,但根据您的代码,您正在寻找的值是:“4909,4902,4905”,这并不意味着它应该返回female.jpg,female.jpg ,female.jpg?
您可以使用此xpath查找dist_region兄弟的图像文件(只需将'4909'替换为其他数字:
//dist_region[@value='4909']/following-sibling::image
答案 1 :(得分:1)
您编写的//Product_id[/image]/@value
的XPATH错误使用// Product_id / tab_id / image / @值来获取female.jpg, and male.jpg
答案 2 :(得分:1)
从xapth点开始,这似乎就是你要找的东西:
'//product_id [*/dist_region[contains(concat(@value, ","), $array_top )]]/tab_id/image/@value'
这应该与你的javasrcipt var:
相似'//product_id [*/dist_region[contains(concat(@value, ","), '
+ array_top[i] +
')]]/tab_id/image/@value'
我仍然不知道你为什么需要contains()。 还可以尝试:
'//product_id [*/dist_region[@value = $array_top ]]/tab_id/image/@value'