如果元素属性值匹配则获取图像属性值 [英] if element attribute value match then get image attribute value

查看:33
本文介绍了如果元素属性值匹配则获取图像属性值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取元素图像属性.
从这个 xml 文件:-

<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></产品>

这是我的 xpath:-

var xPath = '///*[local-name() = "dist_region" and ' +' contains(concat(@value, ","), "' + array_top[i] + ',")]' +'//Product_id[/image]/@value';

这是完整的代码:-

<头><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><脚本>var逗号='';变量节点='';变量结果='';无功输出;var xml;$.get("产品.xml",空值,功能(数据){xml = 数据;},xml");函数 get_list() {var 值 = "4909,4902,4905";var array_top = value.split(',');for(var i=0;i<身体><input type="button" name="button" value="Search" onclick="get_list()"><div id="结果">

</html>

预期 O/p:-female.jpg,male.jpg

在这里,我尝试从数组中一一传递 dist_region 值,如果它与我的 xml 文件匹配,则返回那里的图像元素属性值.
请检查我的 x-path 并建议我.
谢谢.

解决方案

从 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'

i am try to get element image attribute.
from this xml file:-

<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>

and this is my xpath:-

var xPath = '//*[local-name() = "dist_region" and ' +
                                        ' contains(concat(@value, ","), "' + array_top[i] + ',")]' + 
                                        '//Product_id[/image]/@value';

this is full code:-

<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>

expected O/p:- female.jpg,male.jpg

here i am try to pass one by one dist_region value from the array and if its match on my xml file then return there image element attribute value.
please check my x-path and suggest me.
thanks.

解决方案

From the xapth point of this seem to be what you are looking for:

'//product_id [*/dist_region[contains(concat(@value, ","), $array_top )]]/tab_id/image/@value'

which should be something like this wiht your javasrcipt var:

'//product_id [*/dist_region[contains(concat(@value, ","), '
 + array_top[i] + 
')]]/tab_id/image/@value'

Still I do not know why you need the contains(). Try also:

'//product_id [*/dist_region[@value = $array_top ]]/tab_id/image/@value'

这篇关于如果元素属性值匹配则获取图像属性值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆