在 powershell 中使用冒号搜索 XML
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的 XML 文件缺少
val
命名空间的声明。此外,
元素未终止。将命名空间声明放入
元素中:然后你就可以了
<前><代码> PS C:\> $xml = [xml](获取内容test.xml)
PS C:\Users\mizo\test> $xml.root.value
1234
如果您无法控制 XML 数据,您可以声明虚拟根中的
val
命名空间作为解决方法:然后您可以访问元素:
<前><代码>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:Then you can do
If you don't have control over the XML data, you can declare the
val
namespace in a dummy root as a workaround:Then you can access the elements:
Replace
urn:dummy
with a relevant identifier if you wish.因此,即使没有所有信息,我也会尝试解决这个问题。根据您提供的示例 XML,您的 XML 格式不正确。你至少有两个问题。第一个是没有匹配的关闭标签的标签。第二个是您正在使用命名空间而没有声明它。要解决此问题,请将以下内容更改为:
更改为:
或者如果您愿意,可以使用更合适的 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:
To this:
Or use a more appropriate URI if you would prefer.
您只需在加载 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/