Jump to content
Sign in to follow this  

Using XMLDomWrapper.au3 to Get Attributes

Recommended Posts



I've been looking at XPath tutorials and trying to find Autoit example to solve a simple problem, I must be missing something here and would be grateful for help.


#include <_XMLDomWrapper.au3>


local $ids =_XMLGetAttrib('/r/line', "b")
ConsoleWrite(@LF & "=====" & $ids & "=====" & @LF)

;~ <r>
;~  <line a="1" b="2">hi</line>
;~  <line a="3" b="4">hey</line>
;~  <line a="5" b="6">hello</line>
;~ </r>

and console says: =====6=====

But I want to get all values for "b=" I want to get from the XML file 2,4,6

I tried the _XMLGetAllAttrib function but if that's the way to do it then I'm doing something wrong too. I've tested the XPath:  /r/line/@b  in Notepad++ XML Plugin and this XPath gives all the b values. If anyone could enlighten me I would appreciate it. Thanks. How do I get all the b values out of the XML?


Share this post

Link to post
Share on other sites


I know you are wanting to do this with XPATH (Maybe someone can help with this), I have tried with XMLDomWrapper and had no luck. But for the sake of a quick answer to your problem. You could try the below method, Returns an Array with Results.

#include <Array.au3>

$vXML = '<r>'
$vXML &=  '<line a="1" b="2">hi</line>'
$vXML &=  '<line a="3" b="4">hey</line>'
$vXML &=  '<line a="5" b="6">hello</line>'
$vXML &= '</r>'

$vRequest = StringRegExp($vXML, '<line\sa=".*?"\sb="(.*?)">.*?</line>', 3)


Also managed to get it working by declaring the XMLDOM Object

#include <Array.au3>

$vXML = '<r>'
$vXML &=  '<line a="1" b="2">hi</line>'
$vXML &=  '<line a="3" b="4">hey</line>'
$vXML &=  '<line a="5" b="6">hello</line>'
$vXML &= '</r>'

Local $vXPath = '//r/line'
Local $vAttrib = 'b'

$vXMLObj = ObjCreate('Microsoft.XMLDOM')
$vXMLBody = $vXMLObj.loadXML($vXML)
$vXMLNodeList = $vXMLObj.selectNodes($vXPath)
$vXMLNodeLength = $vXMLNodeList.length

Local $vArr[$vXMLNodeLength]

    For $i = 0 To $vXMLNodeList.length - 1
        $vGetAttrib = $vXMLNodeList.item($i).getAttribute($vAttrib)
        $vArr[$i] = $vGetAttrib


Edited by mrflibblehat

[font="'courier new', courier, monospace;"]Pastebin UDF | Prowl UDF[/font]

Share this post

Link to post
Share on other sites

awww, beat me to it...posting anyways to show collection loops (not storing in an array)

$sXML = '<r><line a="1" b="2">hi</line><line a="3" b="4">hey</line><line a="5" b="6">hello</line></r>'
$oXML = ObjCreate("Microsoft.XMLDOM")
$oAttribCol = $oXML.selectNodes( '//line/@b' )

For $oAttrib In $oAttribCol
    ConsoleWrite($oAttrib.value & @CRLF)

ConsoleWrite(@CRLF & "Take 2" & @CRLF)

$oNodeCol = $oXML.selectNodes( '//line' )
For $oNode In $oNodeCol
    ConsoleWrite($oNode.getAttribute("b") & @CRLF)

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post

Link to post
Share on other sites

I was looking for something like this - just put in the correct XPath and get the results. This "Microsoft.XMLDOM" solution worked like a charm. Thank you.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • ijourneaux
      By ijourneaux
      I am trying to read an XML file that looks like the following. I am particularly interested in the ParameterNames and ParameterValues
      I was able to read a simplier XML file using
      $oXML.load("DataForwardSettings.xml") Local $oInfos = $oXML.selectnodes("//Database") ; or //Info or //Data//Info or //Values/Info  but have not been able to read
      <?xml version="1.0"?> <Entities> <Entity RecordType="TrendData"> <Property Name="AlarmLimitsSetNumber" IsReadOnly="False" ValueType="System.Int32">8</Property> <Property Name="AnalysisParamaterSetNumber" IsReadOnly="False" ValueType="System.Int32">8</Property> <Property Name="ParameterNames" IsReadOnly="True" IsList="True" ListType="List<string>" ValueType="Array" ArrayType="System.String" Count="12">System.Collections.Generic.List`1[System.String]<Data>OVERALL|PK-PK WAVEFORM|HFD|CREST FACTOR|SYNC 1-6|1X|2X|3X-4X|FTF|BSF|BPFO|BPFI</Data></Property> <Property Name="ParameterValues" IsReadOnly="True" IsList="True" ListType="List<float>" ValueType="Array" ArrayType="System.Single" Count="12">System.Collections.Generic.List`1[System.Single]<Data>0.04706,0.27951,0.02640,4.85608,0.03494,0.01727,0.02256,0.01993,0.00207,0.00060,0.00178,0.00221</Data></Property> <Property Name="NumberOfParameters" IsReadOnly="False" ValueType="System.Int32">12</Property> <Property Name="ModifiedSinceLastDataDump" IsReadOnly="False" ValueType="System.Boolean">False</Property> <Property Name="Load" IsReadOnly="False" ValueType="System.Single">0</Property> <Property Name="RPM" IsReadOnly="False" ValueType="System.Single">140.962</Property> <Property Name="Value" IsReadOnly="False" ValueType="System.Single">-1.1E-20</Property> <Property Name="SampleID" IsReadOnly="False" ValueType="System.Int32">-626794</Property> <Property Name="Timestamp_as_String" IsReadOnly="True" ValueType="System.String">8/18/2018 2:05:33 PM</Property> <Property Name="Timestamp_as_UInt" IsReadOnly="False" ValueType="System.UInt32">1534619133</Property> <Property Name="Timestamp" IsReadOnly="False" ValueType="System.DateTime">8/18/2018 2:05:33 PM</Property> <Property Name="StorageFlag" IsReadOnly="False" ValueType="Enum" EnumType="Emerson.CSI.DataImport.MHM.TrendDataStorageType" EnumValue="2">RPM_And_Overall</Property> <Property Name="Parents" IsReadOnly="False" IsList="True" ListType="List<string>" ValueType="Array" ArrayType="System.String" Count="5">System.Collections.Generic.List`1[System.String]<Data>Database=phmhmdb4ts;C:\RBMdbsrv\CustData\4ts_online_1807.rbm;-99|Area=4TS;-494|Equipment=4THTS;-712|MeasurementPoint=D39;-780|DataCollectionSet=Normal Collection Dryer Rolls;-783</Data></Property> </Entity> </Entities> I tried switching to the XML UDF but was alittle lost in how to use it. I am particularly interested in the ParameterNames and ParameterValues.
    • macran
      By macran
      I want to generating a XML file (test.xml) like as follow:
      <?xml version="1.0" encoding="GBK"?>
      <!DOCTYPE SCHEMA SYSTEM "HGWSPZJK.dtd">  ;I can not generate this line
      <SCHEMA CRC="HGWSPZ201808_9131011571786229XM_CRC.XML" SSSQ="201808" CHSNAME="HGWSDKQD" NAME="HGWSPZ">

      <TAXPAYER CJRMC="sigmagroup" CJRDM="9131011571786229XM" CJLX="DKZK" RECORDCOUNT="411" SBRQ="2018-08-31" NSRMC="sigmagroup" SWSBH="9131011571786229XM">

      <Record BZ="" JKKADM="2244" JKKAMC="shanghai" SE="5907.82" TFRQ="2018-08-23" FPHM="224420181000752586-L02"/>
      <Record BZ="" JKKADM="2244" JKKAMC="shanghai" SE="4742.4" TFRQ="2018-08-21" FPHM="224420181000743016-L01"/>
      <Record BZ="" JKKADM="2244" JKKAMC="shanghai" SE="18720" TFRQ="2018-08-14" FPHM="224420181000719215-L01"/>
      I use XML.UDF  
      Local $oXMLile=_XML_CreateFile(@ScriptDir&"\test.xml","",True) 
      but there is no function CreateDocumentType 
      It is no effort even I test use 
      Local $doct=$oXMLfile.CreateDocumentType("SCHEMA", null, "HGWSPZJK.dtd", null)
      pls help me thanks.
    • Skeletor
      By Skeletor
      Hi All,
      This is purely an XML Language question. I need to understand how I can add a value/element in between another XML element. 
      Code below shows the XML file. The info tag has the elements already inserted.
      <Configuration xmlns="http://schemas.datacontract.org/2004/07/Modules.Reporting.DataContracts.LineItems" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <GenConf> <Info>ID, Site, Name , Site_ID</Info> </GenConf> </Configuration> Now, I want to add a value from a node group into this code. Something like below. But the example below does not work.
      Any suggestions?
      <Configuration xmlns="http://schemas.datacontract.org/2004/07/Modules.Reporting.DataContracts.LineItems" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <GenConf> <Info>ID, Site, a/@id, Name , Site_ID</Info> </GenConf> </Configuration> <ProductName> <a id="Windows Server"/> </ProductName>  
    • bhns
      By bhns
      try it for make flyers old games xml + Gdi, i belive many sources had lost 

    • CosminV
      By CosminV
      Hello guys,
      This XML things are driving me crazy...
      Please let me know how can I use the _XMLGetAttrib function... I've tried every possible way that I've read on the forum and I cannot succeed reading an attribute.
      The XML looks like bellow:
      <?xml version="1.0" encoding="UTF-8"?>
      <BATCH attr1= "aaa" attr2="bbb" attr3="ccc">
           <Node1 attr1="aaa" attr2="bbb" attr3="ccc" attr4="ddd" attr5="" attr6="eee" attr7="fff" attr8="ggg"/>
           <Node2 attr1="aaa" attr2="" attr3="" attr4="ddd"/>
           <Node3 attr1="" attr2="" attr3="ccc" attr4="" attr5="" attr6="eee"/>
           <Panel attr1="aaa" STATUS="BBB" attr3="ccc" attr4="ddd" attr5="" attr6="eee">
                <Node5 attr1="aaa" attr2="bbb" attr3="ccc" attr4="ddd" attr5="" attr6="eee" attr7="fff" attr8="ggg"/>
      I need to read the value of STATUS form the Panel node.
      Could you please help me?
      Best regards,