使用PowerShell下载XML并保存为CSV文件?
问题描述:
我对PowerShell相当陌生,但拥有强大的C#背景。使用PowerShell下载XML并保存为CSV文件?
我试图完成的任务是下载一些XML,然后将一些XML文件中的某些元素保存在.csv文件中。我不需要XML中的所有元素,只需要一些项目。
的XML看起来是这样的:
<result>
<case>
<InputData>
<Id>1</Id>
<Firstname>John</Firstname>
<Lastname>Smith</Lastname>
<....lots more properties and subnodes I don't need>
</InputData>
</case>
</result>
我已经成功使用这样的事情下载XML:
$downloaded = ([Xml](New-Object Net.WebClient).DownloadString("http://url.to.server/file.xml"))
现在我需要提取短短数从属性XML,并将其导出到CSV文件。
我知道我可以通过$ downloaded.result.case [0] .InputData.Firstname访问数据,但需要一些关于如何提取一些属性并另存为CSV的建议。
答
,你可以这样做:
$downloaded.result.case | %{ $_.InputData }`
| select Firstname,Lastname `
| Export-Csv -path foo.csv -NoTypeInformation
答
当涉及到将XML转换为其他内容时,XSLT是一种(?)标准方式。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="InputData">
<xsl:value-of select="concat('"', Id, '"')" />
<xsl:value-of select="','" />
<xsl:value-of select="concat('"', Firstname, '"')" />
<xsl:value-of select="','" />
<xsl:value-of select="concat('"', Lastname, '"')" />
<xsl:value-of select=" " />
</xsl:template>
</xsl:stylesheet>
一些PowerShell的背景:www.hanselman.com: XSLT with Powershell
非常好,但我怎么能遍历所有情况下,没有硬编码到[0]呢? 此外,.csv文件中的列以逗号分隔。我怎样才能选择分隔符? – 2009-06-30 19:01:59