如何使用cmdlet Select Xml交互式提示



Select Xml的使用方法如下:

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Select-Xml
cmdlet Select-Xml at command pipeline position 1
Supply values for the following parameters:
Xml[0]: ./bookstore.xml
Xml[1]: 
XPath: /bookstore
Select-Xml: Cannot bind parameter 'Xml'. Cannot convert the "./bookstore.xml" value of type "System.String" to type "System.Xml.XmlNode".
PS /home/nicholas/powershell> 

通过如上所述通过REPL输入参数和Xpath。当然:

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> $doc = New-Object xml                                                                   
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> $doc.Load( (Resolve-Path ./bookstore.xml) )                                             
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Select-Xml "./bookstore.xml" -XPath "/bookstore/book/title" | foreach {$_.node.InnerXML}
Pride And Prejudice
The Handmaid's Tale
Emma
Sense and Sensibility
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> cat ./bookstore.xml
<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
<title>Pride And Prejudice</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>24.95</price>
</book>
<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>29.95</price>
</book>
<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
<title>Emma</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
<title>Sense and Sensibility</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
</bookstore>
PS /home/nicholas/powershell> 

工作良好。

这个问题经过了大量编辑。

我不认为交互式提示会被广泛使用。

如果有人使用它,那太好了。否则,这个问题是为了我的目的而回答的。

交互式提示并不是最好的。如文档所述,-Xml要求一个[Xml]类型的对象,而-Path只要求文件名。存在不同的参数集。按此顺序,参数名称是可选的。如果xpath有方括号,你就必须引用它

[xml]$xml = get-content bookstore.xml
select-xml -XPath /bookstore/book/title -Xml $xml
Node  Path        Pattern
----  ----        -------
title InputStream /bookstore/book/title
title InputStream /bookstore/book/title
title InputStream /bookstore/book/title
title InputStream /bookstore/book/title

select-xml -XPath /bookstore/book/title -Path bookstore.xml
Node  Path                                Pattern
----  ----                                -------
title C:Usersccfadminfoobookstore.xml /bookstore/book/title
title C:Usersccfadminfoobookstore.xml /bookstore/book/title
title C:Usersccfadminfoobookstore.xml /bookstore/book/title
title C:Usersccfadminfoobookstore.xml /bookstore/book/title

使用管道:

# piping to -Content, it has to be one whole string
get-content -raw bookstore.xml | select-xml //title
$xml | select-xml //title

最新更新