Как прочитать XML-файл и записать его содержимое в простой текстовый файл? - PullRequest
0 голосов
/ 15 марта 2010

Как прочитать приведенный ниже XML-файл и записать его содержимое в простой текстовый файл?

<!--
<config>
  <compare>
    <source>d:\demo\</source>
    <destination>e:\demo\</destination>
    <parameters>
      <parameter>FileName</parameter>
      <parameter>Size</parameter>
      <parameter>Date</parameter>
    </parameters>
  </compare>
  <compare>
    <source>d:\sample\</source>
    <destination>e:\sample\</destination>
    <parameters>
      <parameter>Name</parameter>
      <parameter>FullName</parameter>
      <parameter>version</parameter>
      <parameter>culture</parameter>
    </parameters>
  </compare>
</config>
-->

Желаемый вывод:

d:\demo   e:\demo  FileName  Size  Date
d:\sample   e:\sample  Name  FullName  Version Culture

Ответы [ 2 ]

2 голосов
/ 15 марта 2010

Что ж, ваш комментарий к XML будет вызывать некоторые проблемы с синтаксическим анализом - но ради ответа на вопрос я предположу, что его нет в реальной жизни. Самый простой способ справиться с XML в PowerShell - это обработать его как строку и привести его к объекту XML:

$xml = [xml](Get-Content c:\temp\config.xml)

Теперь, когда у вас есть переменная xml, вы можете делать классные вещи, такие как:

$xml.config.compare.source

Который поместит строку "d: \ demo \" в конвейер, и в этом случае дальнейшая обработка не происходит, и она выводит ее. Получение других элементов должно быть довольно простым, хотя несколько тегов параметров обрабатываются аналогично массиву:

$xml.config.compare.parameters.parameter[0]

Записать вывод можно так же просто, как просто перенаправить вывод:

$xml.config.compare.source >> c:\temp\output.txt

Один знак «больше» будет перезаписывать содержимое файла, двойной - для добавления.

1 голос
/ 15 марта 2010

Эта - отличная статья о том, как управлять XML из PowerShell.

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