В колонке прошлого месяца я рассмотрел некоторые более простые аспекты XML, проиллюстрированные некоторыми базовыми сценариями PowerShell. В колонке этого месяца я немного углублюсь в то, как использовать PowerShell с XML.
Возможно, вы помните из прошлого месяца, что вы можете создать документ XML DOM, набрав в командной строке PowerShell что-то вроде этого:
$orderdoc = [xml] (категория D: XmlOrder.xml)
Предполагается, что файл с именем order.xml уже существует в папке D: Xml и что XML, содержащийся в этом файле, действителен. Мы создали действительный файл, который вы найдете по адресу www.pcpro.co.uk/links/151dotnet.
На снимке экрана ниже вы можете увидеть этот XML-документ, просмотренный с помощью бесплатной утилиты XMLPad. Разработано WMHelp (www.wmhelp.com), XMLPad — наиболее полезный инструмент при работе с XML, тем более что он бесплатный. Как видите, XML-файл содержит корневой узел.
Обновление XML-документа
Обновление XML-документа заказа с помощью PowerShell выполняется просто с использованием типов объектов .NET XML Document и XML Element. Следующий код считывает существующий заказ, добавляет к нему новую строку, а затем записывает обновленный заказ обратно в новый файл:
#Addline.ps1 – добавляет строку заказа в d: fooorder.xml
# записывает заказ в d: foo
eworder.xml
# Шаг 1 – создать документ в памяти
$doc=[xml] (кот d: fooorder.xml)
# Шаг 2 – создаем элемент строки заказа
$ол=$док. CreateElement («Строка заказа»)
# Шаг 3 – создайте и заполните подпункты
$Предмет = $док. CreateElement("ItemID")
$предмет. Set_InnerText («876543»)
$Itemd = $док. CreateElement («Описание элемента»)
$itemd. Set_InnerText («Невидимые виджеты»)
$Numordered = $doc. CreateElement("NumberOrdered")
$numOrdered. Set_InnerText («21»)
$Цена = $док. СоздатьЭлемент("Цена")
$цена. Set_Innertext («321,12»)
# Шаг 4 – Теперь создайте строку заказов
$ол. AppendChild($item)
$ол. AppendChild($itemd)
$ол. AppendChild($numordered)
$ол. AppendChild($цена)
# Шаг 5, наконец, добавьте строку заказа в заказ.
$doc.order.orderlines.appendchild($ol)
#Шаг 6 – сохраните документ.
$doc.save("d: fooNeworder.xml")
Добавление строки заказа состоит из шести шагов. Сначала документ открывается и присваивается $doc. Обратите внимание, что это удается только в том случае, если XML-документ правильно сформирован, но для простоты я опустил код обработки ошибок для восстановления после ошибок в XML. Шаг 2 создает новый пустой элемент XML с именем $ol, который представляет новую строку заказа. Элемент создается с использованием метода CreateElement XML-документа. На шаге 3 метод CreateElement используется для создания элементов-компонентов строки заказа ($item, $itemd, $numordered и $price). Метод Set_InnerText используется для присвоения значения каждому из этих элементов компонента. На шаге 4 эти отдельные компоненты добавляются к значению $ol, что создает полностью новую строку заказа. На шаге 5 этот новый элемент строки заказа добавляется к элементу строки заказа документа заказа и, наконец, на шаге 6 обновленный заказ записывается обратно в новый файл с именем (d: foo