如果子注释缺少属性,则获取父属性/继承 [英] Get Parent Attribute/Inheritance if Childnotes missing Attribute

查看:35
本文介绍了如果子注释缺少属性,则获取父属性/继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从我的相关节点获取我可以获得的所有属性.问题是一些子笔记从父母或全局继承.我想要的是如果缺少 Childnotes 属性,我希望它来自父级或全局.尝试了几件事都没有效果 (/ancester::) 有人可以帮助我吗?

i want to get from my relevant Nodes all Attributes i can get. Problem is some Childnotes inherit from Parents or Global. What i want is if Childnotes attribute is missing i want it from parent or global. Tried several things nothing worked like (/ancester::) could someone help me?

我所有节点的代码:

Sub GetAllNodes_V4_8()

Dim XmlNamespaces       As String
Dim xmlDoc              As MSXML2.DOMDocument60
Dim xmlNodes            As MSXML2.IXMLDOMNodeList
Dim xmlAttribute        As MSXML2.IXMLDOMAttribute
Dim node                As MSXML2.IXMLDOMNode
Dim iRow                As Integer
Dim MyRoles             As Integer
Dim oTarget             As Range
Dim oRegEx              As VBScript_RegExp_55.RegExp
Dim oMatches            As VBScript_RegExp_55.MatchCollection
Dim oMatch              As VBScript_RegExp_55.Match
Dim sVarType            As String

    MyRoles = ThisWorkbook.Sheets("MDI OPC Items").Range("B3")
    
    ' load the file
    Set xmlDoc = New MSXML2.DOMDocument60
    xmlDoc.async = False: xmlDoc.validateOnParse = False
    xmlDoc.Load Application.GetOpenFilename()
       
    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:xsd='http://www.w3.org/2001/XMLSchema' " & _
                    "xmlns:pv='http://yyy/NodeSet.xsd'"
    
    xmlDoc.SetProperty "SelectionLanguage", "XPath"
    xmlDoc.SetProperty "SelectionNamespaces", XmlNamespaces
    
    Application.ScreenUpdating = False
    oTarget.Parent.EnableCalculation = False
    
    Set xmlNodes = xmlDoc.SelectNodes("/sonic:UANodeSet/sonic:UAVariable[contains(@NodeId, 'ns=1;s=::')] 
    [starts-with(@DataType, 'i=')][not(@ArrayDimensions)]//@Target")

现在我正在写下来自 xmlNodes 的值.它继续:

Now im writing down the Values from xmlNodes. it goes on with:

Set xmlNodes = xmlDoc.SelectNodes("/sonic:UANodeSet/sonic:UAVariable[contains(@NodeId, 'ns=1;s=::')][starts-with(@DataType, 'i=')][not (@ArrayDimensions) ]/@DataType")

'Write this

Set xmlNodes = xmlDoc.SelectNodes("/sonic:UANodeSet/sonic:UAVariable[starts-with(@DataType, 'i=')]/sonic:Extensions/sonic:Extension/pv:VariableExtension/sonic:ACL/sonic:ACE[@Role=" & MyRoles & "]/@Allow")

现在是最后一行的问题.导致我的一些节点继承了角色和允许.如果缺少属性,我可以做些什么来获取全局一个(或父)?

Now here is the problem on the last row. Cause some of my Nodes inherite Role and Allow. Is there anything i can do to get the global one (or parent) if attribute is missing?

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="http://yyy/NodeSet.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
    <UAObject NodeId="ns=1;s=::" BrowseName="1:::">
        <DisplayName>&lt;Default&gt;</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=2;i=10001</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=2;i=20001</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::AsGlobalPV</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::Program</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:ObjectExtension>
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                </pv:ObjectExtension>
            </Extension>
        </Extensions>
    </UAObject>
    <UAObject ParentNodeId="ns=1;s=::" NodeId="ns=1;s=::AsGlobalPV" BrowseName="1:Global PV">
        <DisplayName>Global PV</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=61</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=1;s=::</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::AsGlobalPV:gFahrzeug</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::AsGlobalPV:gLebewesen</Reference>
        </References>
    </UAObject>
    <UAVariable DataType="ns=1;i=100000" ParentNodeId="ns=1;s=::AsGlobalPV" NodeId="ns=1;s=::AsGlobalPV:gFahrzeug" BrowseName="1:gFahrzeug" AccessLevel="3" ValueRank="-1">
        <DisplayName>gFahrzeug</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100005</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gFahrzeug"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100010" ParentNodeId="ns=1;s=::AsGlobalPV:gFahrzeug" NodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug" BrowseName="1:Kraftfahrzeug" AccessLevel="3" ValueRank="-1">
        <DisplayName>Kraftfahrzeug</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100015</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.PKW</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gFahrzeug.Kraftfahrzeug"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=3" ParentNodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug" NodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW" BrowseName="1:LKW" AccessLevel="3" ValueRank="1" ArrayDimensions="2">
        <DisplayName>LKW</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW[0]</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW[1]</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gFahrzeug.Kraftfahrzeug.LKW"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=3" ParentNodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW" NodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW[0]" BrowseName="1:LKW[0]" AccessLevel="3">
        <DisplayName>LKW[0]</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::gFahrzeug.Kraftfahrzeug.LKW[0]"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=3" ParentNodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW" NodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.LKW[1]" BrowseName="1:LKW[1]" AccessLevel="3">
        <DisplayName>LKW[1]</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::gFahrzeug.Kraftfahrzeug.LKW[1]"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="i=12" ParentNodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug" NodeId="ns=1;s=::AsGlobalPV:gFahrzeug.Kraftfahrzeug.PKW" BrowseName="1:PKW" AccessLevel="3" ValueRank="-1">
        <DisplayName>PKW</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::gFahrzeug.Kraftfahrzeug.PKW"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100020" ParentNodeId="ns=1;s=::AsGlobalPV" NodeId="ns=1;s=::AsGlobalPV:gLebewesen" BrowseName="1:gLebewesen" AccessLevel="3" ValueRank="-1">
        <DisplayName>gLebewesen</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100025</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100030" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier" BrowseName="1:Tier" AccessLevel="3" ValueRank="-1">
        <DisplayName>Tier</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100035</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <Value>
                        <Binding Type="PV" Target="::gLebewesen.Tier"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
    <UAVariable DataType="ns=1;i=100040" ParentNodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier" NodeId="ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund" BrowseName="1:Hund" AccessLevel="3" ValueRank="1" ArrayDimensions="2">
        <DisplayName>Hund</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=1;i=100045</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[0]</Reference>
            <Reference ReferenceType="HasComponent">ns=1;s=::AsGlobalPV:gLebewesen.Tier.Hund[1]</Reference>
        </References>
        <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"/>
                    </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[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>
    <UAObject ParentNodeId="ns=1;s=::" NodeId="ns=1;s=::Program" BrowseName="1:Program">
        <DisplayName>Program</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">ns=2;i=10002</Reference>
            <Reference ReferenceType="Organizes" IsForward="false">ns=1;s=::</Reference>
            <Reference ReferenceType="Organizes">ns=1;s=::Program:lPflanze</Reference>
        </References>
    </UAObject>
    <UAVariable DataType="i=4" ParentNodeId="ns=1;s=::Program" NodeId="ns=1;s=::Program:lPflanze" BrowseName="1:lPflanze" AccessLevel="3">
        <DisplayName>lPflanze</DisplayName>
        <References>
            <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
        </References>
        <Extensions>
            <Extension>
                <pv:VariableExtension AuditEvents="true">
                    <ACL>
                        <ACE Role="1" Allow="0x017F"/>
                        <ACE Role="2" Allow="0x015F"/>
                    </ACL>
                    <Value>
                        <Binding Type="PV" Target="::Program:lPflanze"/>
                    </Value>
                </pv:VariableExtension>
            </Extension>
        </Extensions>
    </UAVariable>
</UANodeSet>

XML 中的第一个条目是 Role 和 Allow 的全局声明

First Entry in XML is the Global declaration of Role and Allow

/UANodeSet/UAObject/Extensions/Extension/pv:ObjectExtension/ACL/ACE/@Role or @Allow

(没有我知道的命名空间)

(without namespaces i know)

我最终需要的是这个:数据类型与查找表一起转换,因此对于此问题不重要.

What i need is this in the end: The Datatype is Translated with lookup Table so unimportant for this issue.

Name:                                       Datatype:   Allow(Role):
gFahrzeug.Kraftfahrzeug.LKW[0]              Byte        0x015F
gFahrzeug.Kraftfahrzeug.LKW[1]              Byte        0x015F
gFahrzeug.Kraftfahrzeug.PKW                 String      0x015E
gLebewesen.Tier.Hund[0].Xoloitzcuintli[0]   Boolean     0x015E
gLebewesen.Tier.Hund[0].Xoloitzcuintli[1]   Boolean     0x011F
gLebewesen.Tier.Hund[0].MastinoNapoletano   UInt32      0x015F
gLebewesen.Tier.Hund[1].Xoloitzcuintli      UInt32      asdasda
Program:lPflanze                            Int16       asd

或者是否有更好的解决方案来获取这些属性并将它们写入 Excel atm 的不同单元格中.我这样做:

Or is there a better solution to get these Attributes and write them in different cells in Excel atm. im doing it with:

For Each xmlAttribute In xmlNodes
    oTarget.Offset(iRow, 3).Value = xmlAttribute.Value
    iRow = iRow + 1
Next xmlAttribute

推荐答案

好吧,有人,不知何故,有时正在为同样的问题苦苦挣扎,明白了.

Ok someone, somehow, sometime is struggling with the same problem got it.

首先,如果您想使用这样的变量来设置 XPath 目录:

First of all if you want to set your XPath directory with variables working like this:

Set xmlNodesTempAllow = xmlDoc.SelectNodes("//*[@NodeId='" & ParentNodeId & "']//sonic:ACE[@Role=" & MyRoles & "]/@Allow")

Set xmlNodesTemp = xmlDoc.SelectNodes("//*[@NodeId='" & xmlNodes(i).Attributes(2).Text & "']//sonic:References/sonic:Reference[@ReferenceType='HasComponent']/@ReferenceType")

Set xmlNodesTemp = xmlDoc.SelectNodes("//*[@NodeId='" & xmlNodes(i).Attributes(2).Text & "']//sonic:Description") 'its not an Attribute

'Last one just with @Role - variable
Set xmlNodes = xmlDoc.SelectNodes("/sonic:UANodeSet/sonic:UAObject/sonic:Extensions/sonic:Extension/pv:ObjectExtension/sonic:ACL/sonic:ACE[@Role=" & MyRoles & "]/@Allow")

如果你完成设置你的路径,一切都很好,你可以在 xmlnodes 中导航,如:

If ure done setting ure path an all is fine u can navigate inside xmlnodes like:

xmlNodesTemp(0).Text 'first entry of xmlnodes like arraycounting
xmlNodesTemp(0).NodeValue
xmlNodesTempParent(0).Attributes(1).Text  'first entry 2nd attribute
xmlNodesTempParent(0).ChildNodes(0).Attributes(1).Text 'first entry, first child, 2nd attribute...

如果你想知道你的 XPatch 找到了什么你可以像这样检查它

if u want to know that ure XPatch found something u can check it like this

 If xmlNodesTempAllow.Length > 0 Then
...

通过这些命令,您可以从您想要的 xml 中获取所有信息.

with these commands u can get all information from a xml u want.

这篇关于如果子注释缺少属性,则获取父属性/继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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