【问题标题】:Get attribute value from XML file从 XML 文件中获取属性值
【发布时间】:2020-08-18 17:43:27
【问题描述】:

我正在尝试从 OPCUA NodeSet 中检索 UAObjectType 的所有 NodeId。

这里是xml文件:https://github.com/OPCFoundation/UA-Nodeset/blob/master/Robotics/Opc.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

你知道我该如何解决吗?

感谢大家的关注。

【问题讨论】:

    标签: node.js xml xpath opc-ua


    【解决方案1】:

    假设您可以访问 XPath 2.0 处理器(Saxon-JS ?、xpath.js ?):

    string-join(//*[name()="UAObjectType"]/@NodeId,",")
    

    测试:https://raw.githubusercontent.com/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))。

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多