Linux 如何在Powershell REPL控制台中打印xml元素及其属性的列表?
参考: 以及: 如何打印元素及其属性的列表Linux 如何在Powershell REPL控制台中打印xml元素及其属性的列表?,linux,xml,powershell,xpath,read-eval-print-loop,Linux,Xml,Powershell,Xpath,Read Eval Print Loop,参考: 以及: 如何打印元素及其属性的列表 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($
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>
只是没有使用
书籍
:
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $doc.bookstore.book
genre : novel
publicationdate : 1997
ISBN : 1-861001-57-8
title : Pride And Prejudice
author : author
price : 24.95
genre : novel
publicationdate : 1992
ISBN : 1-861002-30-1
title : The Handmaid's Tale
author : author
price : 29.95
genre : novel
publicationdate : 1991
ISBN : 1-861001-57-6
title : Emma
author : author
price : 19.95
genre : novel
publicationdate : 1982
ISBN : 1-861001-45-3
title : Sense and Sensibility
author : author
price : 19.95
PS /home/nicholas/powershell>
哎哟。只是没有使用
书籍
:
PS /home/nicholas/powershell>
PS /home/nicholas/powershell> $doc.bookstore.book
genre : novel
publicationdate : 1997
ISBN : 1-861001-57-8
title : Pride And Prejudice
author : author
price : 24.95
genre : novel
publicationdate : 1992
ISBN : 1-861002-30-1
title : The Handmaid's Tale
author : author
price : 29.95
genre : novel
publicationdate : 1991
ISBN : 1-861001-57-6
title : Emma
author : author
price : 19.95
genre : novel
publicationdate : 1982
ISBN : 1-861001-45-3
title : Sense and Sensibility
author : author
price : 19.95
PS /home/nicholas/powershell>
哎呀。要解决问题中出现的语法错误:
#breaked:'first name'不加引号就不能使用
$doc.bookstore.book[1]。author.first-name
#好:
$doc.bookstore.book[1]。作者。'first-name'
在PowerShell中作为属性名出现的元素名first name
,不能在没有引号的情况下使用,因为-
随后被解释为减法运算符,从而导致您看到的错误
简言之:
- 只有字母、数字和
(下划线)可以在不带引号的属性名称中使用;未加引号的变量名同上。[1]
- 如有疑问,请引用
[1]PowerShell中标识符名称的确切规则: 更准确地说,PowerShell允许标识符不带引号,如果它仅由以下Unicode类别之一的字符组成(在.NET中定义为枚举;括号中列出的字符可与正则表达式中的
\p{}
一起使用):
- (
)Lu
- (
)Ll
- (
)Lt
- (
)Lm
- (
)Lo
- (
)-第一个字符除外(变量名没有此限制)Nd
- (“低条”,更典型的是:“下划线”,唯一允许的符号)
- 属性名称(
).foo
- 哈希表文本中的键(
)@{foo=…}
- 变量名(
)$foo
标识符确实支持附加字符,但需要附加语法: 不符合上述规则的标识符必须:
- 属性名和哈希表键:带引号(
或'last-name'
)last-name'
- 变量名:包含在
中({…}
)${last name}
请注意,扩展规则适用于命令名(函数、cmdlet、脚本或可执行文件的名称及其别名)和模块名:
- 除上述内容外,允许以下内容无需报价:
- (“连字符”、“减号”,松散地称为“破折号”)
- (“句号”、“句号”)
- 文件路径中也有:)和)
Set别名“a&b”Get Date;&'a&b'
在技术上是可行的,但是调用的笨拙(引用,然后需要&
)使得这是一个糟糕的选择。要解决问题中显示的语法错误:
#breaked:'first name'不加引号就不能使用
$doc.bookstore.book[1]。author.first-name
#好:
$doc.bookstore.book[1]。作者。'first-name'
在PowerShell中作为属性名出现的元素名first name
,不能在没有引号的情况下使用,因为-
随后被解释为减法运算符,从而导致您看到的错误
简言之:
- 只有字母、数字和
(下划线)可以在不带引号的属性名称中使用;未加引号的变量名同上。[1]
- 如有疑问,请引用
[1]PowerShell中标识符名称的确切规则: 更准确地说,PowerShell允许标识符不带引号,如果它仅由以下Unicode类别之一的字符组成(在.NET中定义为枚举;括号中列出的字符可与正则表达式中的
\p{}
一起使用):
- (
)Lu
- (
)Ll
- (
)Lt
- (
)Lm
- (
)Lo
- (
)-第一个字符除外(变量名没有此限制)Nd
- (“低条”,更典型的是:“下划线”,唯一允许的符号)
- 属性名称(
).foo
- 哈希表文本中的键(
)@{foo=…}
- 变量名(
)$foo
标识符确实支持附加字符,但需要附加语法: 不符合上述规则的标识符必须:
- 属性名和哈希表键:带引号(
或'last-name'
)last-name'
- 变量名:包含在
中({…}
)${last name}
请注意,扩展规则适用于命令名(函数、cmdlet、脚本或可执行文件的名称及其别名)和模块名:
- 除上述内容外,允许以下内容无需报价:
- (“连字符”、“减号”,松散地称为“破折号”)
- (“句号”、“句号”)
- 文件路径中也有:)和)
$xmldoc.bookstore.book | Format-Xml