Verwenden von PowerShell wie füge ich mehrere namespaces (eine davon ist die Standard-namespace)?
Ich habe ein XML-Dokument enthält zwei namespaces ("default" - namespace und xlink):
- xmlns="http://embassy/schemas/dudezilla/"
- xmlns:xlink="http://www.w3.org/1999/xlink"
Wie kann ich festlegen, "beide" namespaces in meinem PowerShell-code? PowerShell scheint zu wollen, dass ein Präfix für den default-namespace. Wie mache ich das?
Nun habe ich den folgenden code (nicht sicher, was für den default namespace):
[System.Xml.XmlNamespaceManager] $nsmgr = $xml.NameTable;
$nsmgr.AddNamespace('?','http://embassy/schemas/dudezilla/');
[System.Xml.XmlNamespaceManager] $nsmgr = $xml.NameTable;
$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;
}
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
PowerShell v2 macht dies einfacher:
Wenn Sie wollen, es zu tun die andere Weise versuchen:
| foreach-object { $_.node.InnerXML }
$xml.NameTable
funktioniert, obwohl es keineNameTable
Mitglied auf eine[System.Xml.XmlDocument]
Objekt in PowerShell?Herausgefunden. War die Verwendung der $null für die Vorwahl der Standard-namespace ($null ist äquivalent zu String.Leer in C#).
Arbeiten code: