如何从具有命名空间的XML中获取节点

s0Nic

有命名空间的xml。问题是我没有得到任何节点。(带*的字符除外)搜索有关正确语法的多个站点和帖子……无济于事。低于我的xml和我在vba中的代码。这些命名空间plz帮助我在做什么错。通过// @ NodeId我可以得到我想要的属性,但这还不够,我需要Node ....我什至没有得到第一个(UANodeSet)xmlNodes说= Nothing ....任何帮助都很好

    xmlDoc.Load Application.GetOpenFilename()
    xmlDoc.setProperty "SelectionLanguage", "XPath"
    
    Application.ScreenUpdating = False
    oTarget.Parent.EnableCalculation = False
    
    XmlNamespaces = "xmlns:ua='http://xxx/NodeSet.xsd'"
    xmlDoc.setProperty "SelectionNamespaces", XmlNamespaces
    Set xmlNodes = xmlDoc.SelectNodes("/ua:UANodeSet/ua:UAVariable)

XML:

<?xml version="1.0" encoding="utf-8"?>
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns:ua="http://xxx/NodeSet.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pv="xxx/PV.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
    <UAVariable DataType="ns=1;i=100040" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0]" BrowseName="1:Hund[0]" AccessLevel="3" ValueRank="-1">
        <DisplayName>Hund[0]</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100045</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].MastinoNapoletano</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[0]"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=1" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0]" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli" BrowseName="1:Xoloitzcuintli" AccessLevel="3" ValueRank="1" ArrayDimensions="2">
        <DisplayName>Xoloitzcuintli</DisplayName>
        <References>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli[0]</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli[1]</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[0].Xoloitzcuintli"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=1" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli[0]" BrowseName="1:Xoloitzcuintli[0]" AccessLevel="3">
        <DisplayName>Xoloitzcuintli[0]</DisplayName>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[0].Xoloitzcuintli[0]"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=1" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].Xoloitzcuintli[1]" BrowseName="1:Xoloitzcuintli[1]" AccessLevel="3">
        <DisplayName>Xoloitzcuintli[1]</DisplayName>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[0].Xoloitzcuintli[1]"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=7" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0]" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0].MastinoNapoletano" BrowseName="1:MastinoNapoletano" AccessLevel="3">
        <DisplayName>MastinoNapoletano</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[0].MastinoNapoletano"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100040" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1]" BrowseName="1:Hund[1]" AccessLevel="3" ValueRank="-1">
        <DisplayName>Hund[1]</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100045</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1].Xoloitzcuintli</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1].MastinoNapoletano</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[1]"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=1" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1]" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1].Xoloitzcuintli" BrowseName="1:Xoloitzcuintli" AccessLevel="3" ValueRank="1" ArrayDimensions="2">
        <DisplayName>Xoloitzcuintli</DisplayName>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[1].Xoloitzcuintli"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=7" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1]" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1].MastinoNapoletano" BrowseName="1:MastinoNapoletano" AccessLevel="3">
        <DisplayName>MastinoNapoletano</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier.Hund[1].MastinoNapoletano"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
</UANodeSet>
完善

您的主要问题不是注册默认名称空间。您的XML包含多个带前缀的命名空间,一个不带前缀的命名空间:

带前缀:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" 
xmlns:ua="http://xxx/NodeSet.xsd" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:pv="xxx/PV.xsd" 

没有前缀:

xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd"      

没有前缀的名称空间被认为是默认名称空间,如果节点不保留前缀,则文档中的所有基础节点都将属于该名称空间。由于<UANodeSet><UAVariable>没有以冒号分隔的前缀(不同于<pv:VariableExtension>),因此您必须在VBA中此默认名称空间下解析其内容。

下面使用用户定义的名称注册所有名称空间和默认名称空间,该名称sonic将在XPath解析中使用。注意:名称空间以空格分隔的字符串组合。

XmlNamespaces = "xmlns:sonic='http://opcfoundation.org/UA/2011/03/UANodeSet.xsd' " & _    
                "xmlns:ua='http://xxx/NodeSet.xsd' " & _      
                "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "  & _                   
                "xmlns:uax='http://opcfoundation.org/UA/2008/02/Types.xsd' " & _
                "xmlns:ua='http://xxx/NodeSet.xsd' " & _ 
                "xmlns:xsd='http://www.w3.org/2001/XMLSchema' " & _ 
                "xmlns:pv='xxx/PV.xsd'" 

xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.setProperty "SelectionNamespaces", XmlNamespaces

Set xmlNodes = xmlDoc.SelectNodes("/sonic:UANodeSet/sonic:UAVariable")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取具有命名空间的子节点值?

来自分类Dev

根元素中的命名空间定义也具有命名空间-有效的XML?

来自分类Dev

XML :: LibXML问题发现具有命名空间的XML节点

来自分类Dev

如何在LINQ to XML中选择带有命名空间的XML节点

来自分类Dev

如果属性名称具有命名空间,XPath 如何通过属性名称选择节点

来自分类Dev

使用具有命名空间的 R 解析 XML

来自分类Dev

具有命名空间的 Linq XML Xelement 返回 Null

来自分类Dev

在SQL Server 2008中使用xmlnamespaces读取具有命名空间的XML文件

来自分类Dev

如何更改具有命名空间的属性的值?

来自分类Dev

在 PHP 中扩展具有命名空间的类

来自分类Dev

在 R 中解析嵌套的 XML(带有命名空间)

来自分类Dev

如何在 PHP Xpath 中获取带有命名空间前缀的元素名称

来自分类Dev

如何从带有命名空间的XML元素中检索记录?

来自分类Dev

在Java中获取具有名称空间的XML节点

来自分类Dev

如何使Clojure中.core命名空间中的所有命名空间中的函数可用?

来自分类Dev

如何使Clojure中.core命名空间中的所有命名空间中的函数可用?

来自分类Dev

在具有命名空间的xml文档中使用html标签

来自分类Dev

具有命名空间的XML到Pandas DF-Python

来自分类Dev

读取和写入具有命名空间的 XML 文件,而无需遍历每个元素

来自分类Dev

使用XSLT的XML到XML,没有命名空间

来自分类Dev

使用PHP中的SimpleXML创建具有命名空间的RSS元素

来自分类Dev

具有命名空间的Firebase远程配置

来自分类Dev

有命名空间而没有命名空间

来自分类Dev

没有命名空间的JDOM XPath获取内部元素

来自分类Dev

带有命名空间的XML的XPath是什么

来自分类Dev

使用 XmlWriter 的带有命名空间的 XML

来自分类Dev

XML获取命名空间节点值

来自分类Dev

如何在Visual Studio中查找没有命名空间的C#文件?

来自分类Dev

如何在PHP ZF2中加载没有命名空间的PHP库?

Related 相关文章

  1. 1

    如何获取具有命名空间的子节点值?

  2. 2

    根元素中的命名空间定义也具有命名空间-有效的XML?

  3. 3

    XML :: LibXML问题发现具有命名空间的XML节点

  4. 4

    如何在LINQ to XML中选择带有命名空间的XML节点

  5. 5

    如果属性名称具有命名空间,XPath 如何通过属性名称选择节点

  6. 6

    使用具有命名空间的 R 解析 XML

  7. 7

    具有命名空间的 Linq XML Xelement 返回 Null

  8. 8

    在SQL Server 2008中使用xmlnamespaces读取具有命名空间的XML文件

  9. 9

    如何更改具有命名空间的属性的值?

  10. 10

    在 PHP 中扩展具有命名空间的类

  11. 11

    在 R 中解析嵌套的 XML(带有命名空间)

  12. 12

    如何在 PHP Xpath 中获取带有命名空间前缀的元素名称

  13. 13

    如何从带有命名空间的XML元素中检索记录?

  14. 14

    在Java中获取具有名称空间的XML节点

  15. 15

    如何使Clojure中.core命名空间中的所有命名空间中的函数可用?

  16. 16

    如何使Clojure中.core命名空间中的所有命名空间中的函数可用?

  17. 17

    在具有命名空间的xml文档中使用html标签

  18. 18

    具有命名空间的XML到Pandas DF-Python

  19. 19

    读取和写入具有命名空间的 XML 文件,而无需遍历每个元素

  20. 20

    使用XSLT的XML到XML,没有命名空间

  21. 21

    使用PHP中的SimpleXML创建具有命名空间的RSS元素

  22. 22

    具有命名空间的Firebase远程配置

  23. 23

    有命名空间而没有命名空间

  24. 24

    没有命名空间的JDOM XPath获取内部元素

  25. 25

    带有命名空间的XML的XPath是什么

  26. 26

    使用 XmlWriter 的带有命名空间的 XML

  27. 27

    XML获取命名空间节点值

  28. 28

    如何在Visual Studio中查找没有命名空间的C#文件?

  29. 29

    如何在PHP ZF2中加载没有命名空间的PHP库?

热门标签

归档