Javascript xpath包含concat不起作用
这是xml文件(demo.xml):-Javascript xpath包含concat不起作用,javascript,xpath,xquery,Javascript,Xpath,Xquery,这是xml文件(demo.xml):- 在这个代码的帮助下。。。它的工作很好 如果我在第一个文本框中输入dist\u map,并且 在第二个文本框中有一个属性值 根据操作员提供我需要的性能o/p… 但如果我的xml是这样的:- <products> <product_id value="1"> <tab_id value="351"> <tab_name value="test1"/>
在这个代码的帮助下。。。它的工作很好
如果我在第一个文本框中输入
dist\u map
,并且在第二个文本框中有一个属性值
根据操作员提供我需要的性能o/p…
但如果我的xml是这样的:-
<products>
<product_id value="1">
<tab_id value="351">
<tab_name value="test1"/>
<dist_map value="5,8,9"/>
</tab_id>
</product_id>
<product_id value="2">
<tab_id value="352">
<tab_name value="test2"/>
<dist_map value="3,7,9"/>
</tab_id>
</product_id>
</products>
在此xml文件中我有多个属性值
dist\u map
like3,8,9
为此设置了什么xpath如果我输入了它们的任何一个值,那么它的工作就是我的工作o/p
谢谢…你能说出你的问题吗?这是一个骗局吗?@joewiz不,两者都不一样。因为在这个问题上,我已经解决了我以前的问题查询…@joewiz我正在使用这个xpath<代码>var xPath='/*[(local-name()='+elName+'')和@value'+ls+'+value+']'+'/../../@value'如果dist_map只有一个属性值,如
3
,则此操作很好,但如果有多个值,如3,7,9
,则如何使用文本框检查特定值,我想用于此xpath。。。如果可能的话,请帮助我…@jacklanza使用逗号分隔的值使它们很难使用,并且很难进行小于/大于比较。这不是一个很好的设计,如果您想进行这种类型的查询,我不推荐使用它。我知道原始XML数据在单独的
元素中有单独的值。您是否可以返回到该数据格式?
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
var xml;
$.get(
"demo.xml",
null,
function (data) {
xml = data;
},
"xml"
);
function get_node(ls)
{
var elName = $('#select').val();
var value = $('#value').val();
var xPath = '//*[(text() = '+elName+') or @value '+ ls +' '+value+']'+'/../../@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="select">
<input type="text" id="value">
<input type="button" name="button" value="Less than" onclick="get_node('<')"></input>
<input type="button" name="button" value="Grater than" onclick="get_node('>')"></input>
<input type="button" name="button" value="Equal" onclick="get_node('=')"></input>
<div id="result">
</div>
</body>
</html>
var xPath = '//*[(text() = '+elName+') or @value '+ ls +' '+value+']'+'/../../@value';
<products>
<product_id value="1">
<tab_id value="351">
<tab_name value="test1"/>
<dist_map value="5,8,9"/>
</tab_id>
</product_id>
<product_id value="2">
<tab_id value="352">
<tab_name value="test2"/>
<dist_map value="3,7,9"/>
</tab_id>
</product_id>
</products>