如何使用 cmdlet Select-Xml 交互式提示? [英] how to use the cmdlet Select-Xml interactive prompt?

查看:26
本文介绍了如何使用 cmdlet Select-Xml 交互式提示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Select-Xml 的用法如下:

How is Select-Xml used as below:

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.当然:

by entering the parameters and Xpath through the REPL as above. Certainly:

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> 

工作很好.

这个问题经过大量编辑.

this question was heavily edited.

我不认为交互式提示会被大量使用.

I don't expect the interactive prompt is much used.

应该有人使用它,太好了.否则,这个问题就是为了我的目的而回答的.

Should anyone use it, great. else, the question is answered for my purposes.

推荐答案

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

The interactive prompt isn't the greatest. As documented, -Xml asks for an object of type [xml], while -Path just asks for the filename. There are different parameter sets. In this order, the parameter names are optional. If the xpath has square brackets you'll have to quote it.

[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:\Users\ccfadmin\foo\bookstore.xml /bookstore/book/title
title C:\Users\ccfadmin\foo\bookstore.xml /bookstore/book/title
title C:\Users\ccfadmin\foo\bookstore.xml /bookstore/book/title
title C:\Users\ccfadmin\foo\bookstore.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

这篇关于如何使用 cmdlet Select-Xml 交互式提示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆