Вам необходимо создать узел, используя $xml.CreateElement
, затем добавить значение и, наконец, добавить его к нужному узлу.
Пример - На основе вашего образца
#$PISNode = Select-Xml -Xml $xml -XPath '//det/PIS'
$PISNode = $xml.nfeProc.NFe.infNFe.det.PIS
$NewPISALIQNode = $xml.CreateElement("PISAliq")
$NewPISALIQNode.InnerText = 0.65
$PISNode.AppendChild($NewPISALIQNode)
Если вам нужно выбрать конкретные узлы на основе определенных условий c, я рекомендую использовать Select-XML
вместе с Xpath для выбора нужных вам c узлов.
XPath может быть немного хитро, так как вам нужно изучить его синта, но в Интернете доступно достаточно ресурсов.
Пример # 2 - Получение указанной c группы узлов PIS
В этом примере получают узлы PIS, имеющие значение ICMS / ICMS500 / vB C, в 180,00
$PISNode = Select-Xml -Xml $xml -XPath "//det[ICMS/ICMS00/vBC[.='180.00']]"
if ($PISNode.count -ge 1){$PISNode = $PISNode.Node.PIS}
Дополнительная заметка
Образец xml в вопросе был неверным на момент написания этой статьи. Поэтому я удалил тег <imposto>
и закрыл тег </det>
, чтобы получить действительный XML.
Вот фактические XML, с которыми были проверены эти примеры.
<?xml version="1.0" encoding="UTF-8"?>
<nfeProc>
<NFe>
<infNFe>
<det nItem="1">
<prod>
<vProd>180.00</vProd>
</prod>
<ICMS>
<ICMS00>
<vBC>180.00</vBC>
</ICMS00>
</ICMS>
<PIS>
<PISNT>04</PISNT>
</PIS>
</det>
</infNFe>
</NFe>
</nfeProc>
Ссылки
MDN - XPath
W3schools - XML и XPath
devhints - таблица Xpath