У меня есть XML-файл, который содержит данные для разных стран. Я хочу загрузить XML-файл с помощью PowerShell, отфильтровать данные, чтобы просто показать данные для Великобритании, а затем сохранить результат в новом XML-файле. Я могу загрузить данные, отфильтровать их, но не сохранить. После фильтрации данных 2 верхних узла (набор данных и данные) не видны в целевой переменной.
Я попытался загрузить файл с помощью Get-Content, отфильтровал данные, используя "$ xml.dataset.data | Where {$ _. Country.startsWith (" UK ")}", а затем использовал ".save" для сохранения результат.
Ниже мой XML:
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<data>
<Name>Test1</Name>
<Description>First test in the set</Description>
<FilePath4>C:\Application\Apple.txt</FilePath4>
<country>UK</country>
<FilePath7>C:\Test\Orange.txt</FilePath7>
</data>
<data>
<Name>Test1</Name>
<Description>Third test in the set</Description>
<FilePath4>C:\Application\Apple.txt</FilePath4>
<country>ROI</country>
<FilePath7>C:\Test\Orange.txt</FilePath7>
</data>
</dataset>
Загрузка данных:
$xml = [System.Xml.XmlDocument](Get-Content C:\Users\HybridPC-40\Desktop\Sample.xml)
Фильтр данных:
$xml1 = $xml.dataset.data | Where {$_.country.startsWith("UK")}
Результат:
$xml1
дает
Name : Test1
Description : First test in the set
FilePath4 : C:\Application\Apple.txt
country : UK
FilePath7 : C:\Test\Orange.txt
Сохранение:
$xml1.save("C:\Users\HybridPC-40\Desktop\Test.xml")
дает ниже ошибку
Method invocation failed because [System.Xml.XmlElement] does not contain a method named 'save'.
At line:1 char:1
+ $xml1.save("C:\Users\HybridPC-40\Desktop\Test.xml")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (save:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Ожидаемый результат должен быть новый файл XML с данными ниже:
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<data>
<Name>Test1</Name>
<Description>First test in the set</Description>
<FilePath4>C:\Application\Apple.txt</FilePath4>
<country>UK</country>
<FilePath7>C:\Test\Orange.txt</FilePath7>
</data>
</dataset>