我的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的
答案 0 :(得分:5)
您的XML文件缺少val
命名空间的声明。此外,<bla>
元素未终止。
在<root>
元素中放置名称空间声明:
<val:root xmlns:val="urn:dummy">
然后你可以做
PS C:\> $xml = [xml] (get-content test.xml)
PS C:\Users\mizo\test> $xml.root.value
1234
如果您无法控制XML数据,可以在虚拟根中声明val
命名空间作为解决方法:
$xml = [xml] ("<dummyroot xmlns:val='urn:dummy'>" +
(get-content test.xml) +
"</dummyroot>")
然后你可以访问元素:
PS C:\> $xml.dummyroot.root.value
1234
如果您愿意,请将urn:dummy
替换为相关标识符。
答案 1 :(得分:3)
所以即使没有所有信息,我也会对这个问题进行一次尝试。根据您提供的示例XML,您的XML格式不正确。你至少有两个问题。第一个是没有匹配关闭标记的标记。第二个是你使用命名空间而没有声明它。要解决此问题,请更改此:
<val:root>
对此:
<val:root xmlns:val="http://www.w3.org/TR/html4/">
如果您愿意,可以使用更合适的URI。
答案 2 :(得分:-1)
您只需在加载XML文件时定义命名空间。
http://huddledmasses.org/xpath-and-namespaces-in-powershell/