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.
Get Windows PowerShell Quick Reference now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.