[ACCEPTED]-Using PowerShell, how do I add multiple namespaces (one of which is the default namespace)?-namespaces
Accepted answer
PowerShell v2 makes this simpler:
$ns = @{
dns="http://embassy/schemas/dudezilla/"
xlink="http://www.w3.org/1999/xlink"
}
$xml | Select-Xml '//dns:image/@xlink:href' -Namespace $ns
If you 1 want to do it the other way try:
$nsmgr = New-Object System.Xml.XmlNamespaceManager $xml.NameTable
$nsmgr.AddNamespace('dns','http://embassy/schemas/dudezilla/')
$nsmgr.AddNamespace('xlink','http://www.w3.org/1999/xlink')
$root = $xml.DocumentElement
$nodelist = $root.SelectNodes("//dns:image/@xlink:href", $nsmgr)
foreach ($xmlnode in $nodelist)
{
$xmlnode.Value
}
Figured it out. Had to use $null for the 3 prefix of the default namespace ($null is 2 equivalent to String.Empty in C#).
Working 1 code:
[System.Xml.XmlNamespaceManager] $nsmgr = $xml.NameTable;
$nsmgr.AddNamespace($null,'http://embassy/schemas/dudezilla/');
$nsmgr.AddNamespace('xlink','http://www.w3.org/1999/xlink');
[System.Xml.XmlNodeList] $nodelist;
[System.Xml.XmlElement] $root = $xml.DocumentElement;
$nodelist = $root.SelectNodes("//image/@xlink:href", $nsmgr);
Foreach ($xmlnode in $nodelist)
{
$xmlnode.Value;
}
Source:
stackoverflow.com
More Related questions
Cookie Warning
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.