属性值"/>
从XML文件获取属性值
我正在尝试从OPCUA NodeSet中检索UAObjectType的所有NodeId。
这里是xml文件:.Ua.Robotics.NodeSet2.xml
这是我正在使用的代码:
NodeName = select("//ns1:UAObjectType/ns1:DisplayName/text()", ns);
NodeId = select(String("//ns1:UAObjectType/@NodeId") , ns);
fs.writeFileSync("Names.xml" , NodeName )
fs.writeFileSync("Ids.xml", NodeId)
console.log(NodeId);
if (mapper["ObjectType"] != null) {
var otypes = {};
for (i = 0 ; i<NodeName.length ; i++){
add(otypes , NodeName[i] , NodeId[i]);
}
}
这是我在Ids.xml文件中得到的输出:
NodeId="ns=1;i=1001", NodeId="ns=1;i=15035", NodeId="ns=1;i=15048", NodeId="ns=1;i=15051"
这是我想要的输出:
ns=1;i=1001, ns=1;i=15035 , ns=1;i=15048 , ns=1;i=15051
您知道如何解决吗?
感谢大家的关注。
回答如下:假设您有权使用XPath 2.0处理器(Saxon-JS吗?xpath.js吗?):
string-join(//*[name()="UAObjectType"]/@NodeId,",")
测试:https://raw.githubusercontent/OPCFoundation/UA-Nodeset/master/Robotics/Opc.Ua.Robotics.NodeSet2.xml
输出:'ns=1;i=1002,ns=1;i=1004,ns=1;i=16601,ns=1;i=16794,ns=1;i=1019,ns=1;i=1022,ns=1;i=1013,ns=1;i=17230,ns=1;i=17233,ns=1;i=1003,ns=1;i=17725,ns=1;i=17793,ns=1;i=1011,ns=1;i=1018,ns=1;i=18175'
或使用XPath 1.0,在每个UAObjectType
上循环并连接@NodeId
(string(./@NodeId)
)的每个字符串。
更多推荐
从XML文件获取属性值
发布评论