首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用节点js中的xpath获得属性值?

如何使用节点js中的xpath获得属性值?
EN

Stack Overflow用户
提问于 2016-11-30 10:15:04
回答 1查看 2.7K关注 0票数 1

给定XML

代码语言:javascript
运行
复制
<ValCredLookup>
  <ValCredName name="val-cred-api-cust">
    <certificate thumbprint="12345">
        <clientID id="1bbfea">
            <Merchant-id>123456789</Merchant-id>
        </clientID>            
    </certificate>        
  </ValCredName>
</ValCredLookup>

如何使用xpath按属性值获取证书或clientID?我试过这样的事情

代码语言:javascript
运行
复制
doc = new xmldom().parseFromString(data, 'application/xml');
var xpath = require('xpath');
var valcredname = xpath.select("/ValCredLookup/ValCredName/@name='valcred-api-cust'", doc);

很有效,但如果我试着

代码语言:javascript
运行
复制
var valcredname = xpath.select("/ValCredLookup/ValCredName/@name='val-cred-api-cust'/certificate", doc);

这不管用。

另外,如何引用xpath中的变量?

代码语言:javascript
运行
复制
var vcname = 'valcred-api-cust';
var nodes = xpath.select("/ValCredLookup/ValCredName/@name=????, doc);

我真正需要做的是使用xpath获取clientID下的元素,它使用属性名称、拇指指纹和id,这些都是变量。像这样

代码语言:javascript
运行
复制
var vc = 'val-cred-api-cust';
var tp = '12345';
var id = 1bbfea';
var nodes = xpath.select("/ValCredLookup/ValCredName/@name=vc/certificate/@thumbprint=tp/clientID/@id=id, doc);

好的算出可变位

代码语言:javascript
运行
复制
var vc = "'val-cred-api-cust'";

只需要字符串中的单引号,但就具有多属性值的xpath语句而言,我认为节点js xpath不能做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 11:42:06

要通过ValCredName属性值筛选name,然后返回相应的certificate元素的正确表达式如下:

代码语言:javascript
运行
复制
/ValCredLookup/ValCredName[@name='val-cred-api-cust']/certificate

我不知道您使用的库是否提供了一种更好的方式来访问XPath中的JS变量。如果没有,则可以连接JS变量值来构造XPath表达式,例如:

代码语言:javascript
运行
复制
var vc = "val-cred-api-cust";
var query = "/ValCredLookup/ValCredName[@name='" + vc + "']/certificate";
var valcredname = xpath.select(query, doc);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40885649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档