【发布时间】:2021-03-23 15:54:27
【问题描述】:
参考:
https://www.red-gate.com/simple-talk/sysadmin/powershell/powershell-data-basics-xml/
和:
https://stackoverflow.com/a/65264118/4531180
如何打印元素列表及其属性?
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $doc = new-object System.Xml.XmlDocument
PS /home/nicholas/powershell> $file = resolve-path('./bookstore.xml')
PS /home/nicholas/powershell> $doc.load($file)
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $doc.bookstore.book[1].author.first-name
ParserError:
Line |
1 | $doc.bookstore.book[1].author.first-name
| ~~~~~
| Unexpected token '-name' in expression or statement.
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $doc.bookstore.book[1].author
first-name last-name
---------- ---------
Margaret Atwood
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $doc.bookstore
bk book
-- ----
urn:samples {book, book, book, book}
PS /home/nicholas/powershell>
【问题讨论】:
-
小心你的引用,我建议你避开聪明的,(curly),引号,
“./bookstore.xml”,并使用愚蠢的,(直),改为引号,"/bookstore/book[2]". -
哦,这是从另一个网站复制粘贴的。没看到,谢谢但是,文件加载正常不是问题。
-
我敢打赌,论坛软件并没有只更改一对直引号,而其他所有引号都保持不变。如果您确实复制/粘贴了它们,那么您已经使用了它们,(唯一的另一种选择是您稍后编辑粘贴的信息,并在这样做时自己介绍了它们)。我看到您现在已经在上面编辑了您的评论!以及完全改变你的代码和输出!
-
它实际上是该网站的复制粘贴,我只是省略了在点运算符中指定“书”。但感谢您查看。我明白你的意思。
-
@Compo:虽然通常建议避免使用非 ASCII 引号字符,但请注意 PowerShell 也很乐意接受所谓的印刷引号字符 - 唯一需要注意的是您的源代码文件必须正确编码(在 Windows PowerShell 中表示 带有 BOM 的 Unicode 编码) - 请参阅 this answer.
标签: linux xml powershell xpath read-eval-print-loop