通过vba以XML格式查找

问题描述 投票:0回答:1

我有一个像下面的xml文件。

  <ConnectedAP apName="I16:ETH0" iedName="IE16">    
    <Address>   
      <P type="OSI-AP-Title">1,3,9999,23</P>    
      <P type="IP">172.18.12.243</P>    
      <P type="OSI-AE-Qualifier">23</P> 
      <P type="OSI-PSEL">0001</P>   
      <P type="OSI-SSEL">0001</P>   
      <P type="OSI-TSEL">00000001</P>   
    </Address>  
  </ConnectedAP>    
  <ConnectedAP apName="S1" iedName="STGK16999997422">   
    <Address>   
      <P type="OSI-AP-Title">1,3,9999,23</P>    
      <P type="IP">172.18.12.24</P> 
      <P type="OSI-AE-Qualifier">23</P> 
      <P type="OSI-PSEL">00000001</P>   
      <P type="OSI-SSEL">0001</P>   
      <P type="OSI-TSEL">0001</P>   
    </Address>  
  </ConnectedAP>    
  <ConnectedAP apName="LD0" iedName="GTG699999731RET">  
    <Address>   

我需要通过vba找到iedName的值。

提前致谢。

xml vba
1个回答
1
投票

这是一个快速函数,循环遍历每个// ConnectedAP,输出@iedName属性。

Public Sub getXML()
  Set XML = CreateObject("MSXML2.DOMDocument")
  Dim strXML As String
  strXML = "<xml><ConnectedAP apName='I16:ETH0' iedName='IE16'>    <Address>      <P type='OSI-AP-Title'>1,3,9999,23</P>      <P type='IP'>172.18.12.243</P>      <P type='OSI-AE-Qualifier'>23</P>      <P type='OSI-PSEL'>0001</P>      <P type='OSI-SSEL'>0001</P>      <P type='OSI-TSEL'>00000001</P>    </Address>  </ConnectedAP>  <ConnectedAP apName='S1' iedName='STGK16999997422'>   <Address>      <P type='OSI-AP-Title'>1,3,9999,23</P>      <P type='IP'>172.18.12.24</P>      <P type='OSI-AE-Qualifier'>23</P>      <P type='OSI-PSEL'>00000001</P>      <P type='OSI-SSEL'>0001</P>      <P type='OSI-TSEL'>0001</P>    </Address></ConnectedAP></xml>"
  Call XML.LoadXML(strXML)
  Dim ndXML As Object
  Set ndXML = XML.SelectNodes("//ConnectedAP")
  For i = 0 To ndXML.Length - 1
    MsgBox ndXML(i).getAttribute("iedName")
  Next i

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.