Я действительно потерян, делая что-то простое. Мне нужно отсканировать пару тысяч файлов для нескольких определенных c элементов в каждом файле. С файлом xml, приведенным ниже, я пытаюсь получить содержимое атрибута «значение» для определенного имени c «свойства». Так, например, я просто хочу получить значение имени свойства «MY_KEY_DATA1». Я могу выбрать узел на основе приведенного ниже кода, но мне нужно получить значение «314159» для имени свойства «MY_KEY_DATA1». В приведенном ниже коде я могу получить узел и распечатать его, но как читать атрибут атрибута c? Я знаю, что делаю это нелегко, должен быть более простой метод.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mydevice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" dosid="02073" id="" name="MyTargetName">
<manager name="Module 1">
</manager>
<manager name="Module 2">
</manager>
<misc name="Misc Name">
</misc>
<manager name="Module ABC">
</manager>
<modules>
<module group="Group1" name="name1">
</module>
<module group="Group2" name="name2">
</module>
<module group="Memory" name="myname">
<misc_data name= "MISC_DATA" value = "42"/>
<property name="MY_KEY_DATA1" value="314159"/>
<property name="USELESS_DATA1" value="2"/>
<property name="MY_KEY_DATA1" value="2718"/>
</module>
</modules>
</mydevice>
-
$Testfile = 'xmltest2.xml'
$xml = [xml](Get-Content $Testfile)
$myNode2 = $xml.SelectSingleNode("//modules/module[@group='Memory']")
Write-Output $myNode
Foreach ($xmlProperty in $myNode) {
}