gpt4 book ai didi

powershell - 使用 PowerShell,如何添加多个命名空间(其中之一是默认命名空间)?

转载 作者:行者123 更新时间:2023-12-02 10:21:42 26 4
gpt4 key购买 nike

我有一个 XML 文档,其中包含两个命名空间(“默认”命名空间和 xlink):

  • xmlns="http://embassy/schemas/dudezilla/"
  • xmlns:xlink="http://www.w3.org/1999/xlink"

如何在 PowerShell 代码中指定“两个”命名空间? PowerShell 似乎需要默认命名空间的前缀。我该怎么做?

现在我有以下代码(不确定默认 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;
}

谢谢!

最佳答案

PowerShell v2 使这变得更简单:

$ns = @{
dns="http://embassy/schemas/dudezilla/"
xlink="http://www.w3.org/1999/xlink"
}

$xml | Select-Xml '//dns:image/@xlink:href' -Namespace $ns

如果您想以其他方式执行此操作,请尝试:

$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
}

关于powershell - 使用 PowerShell,如何添加多个命名空间(其中之一是默认命名空间)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com