Working with namespaces

LINQ to XML handles the specification of namespaces by adding an XNamespace object to an XName object, for example:

PS> [XNameSpace]'http://example/cars' + [XName]'engine' 
 
LocalName    Namespace              NamespaceName 
---------    ---------              -------------       
engine       http://example/cars    http://example/cars  

As XNamespace expects to have an XName added to it, casting to that type can be skipped, simplifying the expression:

[XNamespace]'http://example/cars' + 'engine' 

A query for an element in a specific namespace will use the following format:

using namespace System.Xml.Linq 
 
[XDocument]$xDocument = @" 
<?xml version="1.0"?> 
<cars xmlns:c="http://example/cars"> 
    <car type="Saloon"> 
        <c:colour>Green</c:colour> 
        <c:doors>4</c:doors> 
        <c:transmission>Automatic</c:transmission> 
        <c:engine> 
            <size>2.0</size> 
            <cylinders>4</cylinders> 
        </c:engine> 
    </car> 
</cars> 
"@ 
 
$xNScars = [XNameSpace]'http://example/cars' 
$xDocument.Descendants('car').ForEach( { 
    $_.Element($xNScars + 'engine') 
} ) 

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.219.63.90