Search code examples
xmlpowershellxpathtextreturn

Powershell xpath - get the values of two attributes


I'm trying to get the the values of the following two attributes <ATTRIBUTE name="exportPath"> and <ATTRIBUTE name="r_creation_date">

But I'm only able to get one value or the other, not both...:

   [xml]$xml = Get-Content "$AttributesFile"
   $Xml | Select-Xml -XPath "//ATTRIBUTE[@name='r_creation_date']" | foreach {$_.node.InnerXML}

<![CDATA[4/7/2016 6:18:42 PM]]>
<![CDATA[4/9/2016 6:18:42 PM]]>

How would I get the following result instead?

<![CDATA[D:\test\overview_1.0.doc]]>
<![CDATA[4/7/2016 6:18:42 PM]]>
<![CDATA[D:\test\Letter.docx]]>
<![CDATA[4/9/2016 6:18:42 PM]]>

Here is the XML I'm using:

<EXTRACT path="D:\test\">
  <DOCBASE name="xdocs" />
  <VERSION>
    <DOCUMENT name="overview.doc" chronicle_id="09028bf4807d6da5" objectId="09028bf4807d6da5" implicitVersionLabel="1.0">
      <ATTRIBUTE name="docbasePath"></ATTRIBUTE>
      <ATTRIBUTE name="exportPath"><![CDATA[D:\test\overview_1.0.doc]]></ATTRIBUTE>
      <ATTRIBUTE name="r_creation_date"><![CDATA[4/7/2016 6:18:42 PM]]></ATTRIBUTE>
      <ATTRIBUTE name="edo_creation_date"><![CDATA[nulldate]]></ATTRIBUTE>
      <ATTRIBUTE name="edo_import_date"><![CDATA[nulldate]]></ATTRIBUTE>
    </DOCUMENT>
  </VERSION>
  <VERSION>
    <DOCUMENT name="Letter.docx" chronicle_id="09028bf4807e65c5" objectId="09028bf4807e65c5" implicitVersionLabel="1.0">
      <ATTRIBUTE name="docbasePath"></ATTRIBUTE>
      <ATTRIBUTE name="exportPath"><![CDATA[D:\test\Letter.docx]]></ATTRIBUTE>
      <ATTRIBUTE name="r_creation_date"><![CDATA[4/9/2016 6:18:42 PM]]></ATTRIBUTE>
      <ATTRIBUTE name="edo_creation_date"><![CDATA[nulldate]]></ATTRIBUTE>
      <ATTRIBUTE name="edo_import_date"><![CDATA[nulldate]]></ATTRIBUTE>
    </DOCUMENT>
  </VERSION>
</EXTRACT>

Solution

  • Try changing you xpath expression to

    //ATTRIBUTE[@name='r_creation_date' or @name='exportPath']