在 powershell 中使用冒号搜索 XML

发布于 2024-11-30 14:36:39 字数 370 浏览 1 评论 0原文

我有一个 XML 格式:

<val:root>
   <bla>
     <value>1234</value>
</val:root>

我可以将文件的内容获取到 $xml 变量,但我在使用“val:root”时遇到问题。

感谢您的帮助!

编辑:

我尝试了 $xml."val:root"、$xml.val、$xml.'val:root' 和 $xml.{val:root}。在 Mizo 的回答中找到了解决方案:

$xml..value

I have an XML in the format:

<val:root>
   <bla>
     <value>1234</value>
</val:root>

I can do get-content of the file to an $xml variable, but I'm having trouble with the "val:root".

Thanks for any help!

Edit:

I tried $xml."val:root", $xml.val, $xml.'val:root' and $xml.{val:root}. Found the solution in Mizo's answer:

$xml.root.value

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冷血 2024-12-07 14:36:39

您的 XML 文件缺少 val 命名空间的声明。此外, 元素未终止。

  • 将命名空间声明放入 元素中:

    
    

    然后你就可以了

    <前><代码> PS C:\> $xml = [xml](获取内容test.xml)
    PS C:\Users\mizo\test> $xml.root.value
    1234

  • 如果您无法控制 XML 数据,您可以声明虚拟根中的 val 命名空间作为解决方法:

    $xml = [xml] ("" +
                  (获取内容测试.xml)+
                  “”)
    

    然后您可以访问元素:

    <前><代码>PS C:\> $xml.dummyroot.root.value
    1234

替换 < code>urn:dummy 如果您愿意,可以使用相关标识符。

Your XML file is missing a declaration for the val namespace. Also, the <bla> element is unterminated.

  • Place a namespace declaration in the <root> element:

    <val:root xmlns:val="urn:dummy">
    

    Then you can do

     PS C:\> $xml = [xml] (get-content test.xml)
     PS C:\Users\mizo\test> $xml.root.value
     1234
    
  • If you don't have control over the XML data, you can declare the val namespace in a dummy root as a workaround:

    $xml = [xml] ("<dummyroot xmlns:val='urn:dummy'>" +
                  (get-content test.xml) +
                  "</dummyroot>")
    

    Then you can access the elements:

    PS C:\> $xml.dummyroot.root.value
    1234
    

Replace urn:dummy with a relevant identifier if you wish.

滥情哥ㄟ 2024-12-07 14:36:39

因此,即使没有所有信息,我也会尝试解决这个问题。根据您提供的示例 XML,您的 XML 格式不正确。你至少有两个问题。第一个是没有匹配的关闭标签的标签。第二个是您正在使用命名空间而没有声明它。要解决此问题,请将以下内容更改为:

<val:root>

更改为:

<val:root xmlns:val="http://www.w3.org/TR/html4/">

或者如果您愿意,可以使用更合适的 URI。

So I'm going to take a stab at the issue even without all the info. Based on the sample XML that you provided, your XML is malformed. You have at least two issues. The first is the tag without a matching close tag. The second is that you are using a namespace without declaring it. To address this issue, change this:

<val:root>

To this:

<val:root xmlns:val="http://www.w3.org/TR/html4/">

Or use a more appropriate URI if you would prefer.

入画浅相思 2024-12-07 14:36:39

您只需在加载 XML 文件时定义命名空间。

http://huddledmasses.org/xpath-and-namespaces-in-powershell/

You just need to define the namespace(s) when you load the XML file.

http://huddledmasses.org/xpath-and-namespaces-in-powershell/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文