Использование PowerShell для загрузки XML и сохранения в виде файла CSV? - PullRequest
2 голосов
/ 30 июня 2009

Я довольно новичок в PowerShell, но у меня сильный фон C #.

Задача, которую я пытаюсь выполнить, - загрузить 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.

Я понимаю, что могу получить доступ к данным с помощью $ download.result.case [0] .InputData.Firstname, но мне нужно несколько советов о том, как извлечь несколько свойств и сохранить их как CSV.

Ответы [ 2 ]

4 голосов
/ 30 июня 2009

вы можете сделать что-то вроде:

$downloaded.result.case | %{ $_.InputData }`
| select Firstname,Lastname `
| Export-Csv -path foo.csv -NoTypeInformation
0 голосов
/ 30 июня 2009

XSLT - это (?) Стандартный способ преобразования XML во что-то другое.

<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="&#10;" />
  </xsl:template>

</xsl:stylesheet>

Некоторые контексты Powershell: www.hanselman.com: XSLT с Powershell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...