我尝试使用powershell命令select-xml从xml文件中选择数据。当我运行下面的命令时,没有返回任何结果或错误。我希望将版本列表返回到屏幕上。这有什么问题吗?
PS C:\> select-xml -path "C:\t.xml" -xpath "//edition" | foreach {$_.node.InnerXML}
PS C:\>XML文件(C:\t.xml)是:
<?xml version="1.0" encoding="utf-8"?>
<Book>
<projects>
<project name="Book1" date="2009-01-20">
<editions>
<edition language="English">En.Book1.com</edition>
<edition language="German">Ge.Book1.Com</edition>
<edition language="French">Fr.Book1.com</edition>
<edition language="Polish">Pl.Book1.com</edition>
</editions>
</project>
</projects>
</Book>发布于 2010-12-09 19:57:17
好了,我知道问题出在哪里了。XML声明的第一个节点之前有一个空格字符。真的很讨厌。我试过你的第一句话:
PS H:\> $xml = ([xml](Get-Content -Path C:\scripts\t.xml)).Book.Projects.Project它的错误是:
"..The XML声明必须是文档中的第一个节点,并且它前面不允许出现空格字符...“
我确信,当尝试读取xml文件时,select-xml应该会失败,并出现同样的错误。xml文件在IE中呈现正常。
发布于 2010-12-09 18:51:15
另一种方法是:
PS H:\> $xml = ([xml](Get-Content -Path C:\scripts\t.xml)).Book.Projects.Project
PS H:\> $xml.editions | select -ExpandProperty Edition
language #text
-------- -----
English En.Book1.com
German Ge.Book1.Com
French Fr.Book1.com
Polish Pl.Book1.com发布于 2010-12-09 21:54:39
$_.node返回没有innerXml属性的System.Xml.XmlElement
Select-Xml -Path C:\t.xml -XPath "//edition" |
% {$_.node} | get-member | out-gridviewhttps://stackoverflow.com/questions/4397091
复制相似问题