XML
PowerShell supports XML as a native datatype. To create an XML
variable, cast a string to the [xml]
type:
$myXml = [xml] @"
<AddressBook>
<Person contactType="Personal">
<Name>Lee</Name>
<Phone type="home">555-1212</Phone>
<Phone type="work">555-1213</Phone>
</Person>
<Person contactType="Business">
<Name>Ariel</Name>
<Phone>555-1234</Phone>
</Person>
</AddressBook>
"@PowerShell exposes all child nodes and attributes as properties, automatically grouping children that share the same node type:
$myXml.AddressBook
Returns an object that contains a Person property.
$myXml.AddressBook.Person
Returns a list of Person nodes.
Each person node exposes 'contactType', Name, and Phone as properties.
$myXml.AddressBook.Person[0]
Returns the first Person
node.
$myXml.AddressBook.Person[0].ContactType
Returns Personal as the contact
type of the first Person node.
Tip
The XML datatype wraps the
.NET XmlDocument and XmlElement classes. Unlike most PowerShell
.NET wrappers, this wrapper does not expose the properties from the
underlying class, because they may conflict with the dynamic
properties that PowerShell adds for node names.
To access properties of the underlying class, use the PsBase property—for example:
$myXml.PsBase.InnerXml
See the section named “Working with the .NET Framework” to learn more about using PowerShell to interact with the .NET Framework.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access