Код:

# Путь к файлу XML
$sSourceFile = "C:\Песочница\041\КПТ_2014-01-24.xml"
# Создаём экземпляр объекта типа «System.Xml.XmlDocument»
$oXmlDocument = New-Object -TypeName System.Xml.XmlDocument
# Загружаем содержимое файла в созданный экземпляр объекта
$oXmlDocument.load($sSourceFile)
# PowerShell умеет представлять дочерние узлы xml в виде свойств, ординалом или массивом
# (равно, как и атрибуты узла), потому мы можем просто обращаться к свойствам/атрибутам узла через точку.
#
# Для одиночного узла, свойство — ординал, мы просто «спускаемся» вниз по иерархии одиночных узлов.
# Для множества одинаковых узлов, свойство — массив, мы используем перечисление,
# передавая полученный массив узлов по конвейеру на разбор командлету «ForEach-Object».
$oXmlDocument.Region_Cadastr.Package.Cadastral_Blocks.Cadastral_Block.Parcels.Parcel |`
ForEach-Object -Process {
# «$_» — текущий экземпляр каждого из элементов массива, переданного по конвейеру
# командлету «ForEach-Object». Запоминаем атрибут «CadastralNumber» текущего узла «Parcel»
# в переменной «$sCadastralNumber»:
$sCadastralNumber = $_.CadastralNumber
Код:

# От текущего узла «Parcel» опять «спускаемся» вниз по иерархии одиночных узлов
# до очередного массива узлов, который так же передаём по конвейеру командлету «ForEach-Object».
$_.Entity_Spatial.Spatial_Element.Spelement_Unit |`
ForEach-Object -Process {
Код:

# Строим результирующую объект-строку из переменной «$sCadastralNumber»,
# атрибутов текущего узла «Spelement_Unit» и
# атрибутов «X», «Y» и «Delta_Geopoint» дочернего для него узла «Ordinate»:
"$sCadastralNumber;$($_.Su_Nmb);$($_.Ordinate.X);$($_.Ordinate.Y);$($_.Ordinate.Delta_Geopoint)"
Код:

}
} | Out-File -FilePath "C:\Песочница\041\0001.csv" -Encoding ascii
# ↑↑ Набор результирующих строк передаём по конвейеру командлету «Out-File», осуществляющему вывод в файл. ↑↑
Это, разумеется, не единственный способ. Возможно, удобнее будет сделать схему трансформации xsl и применять её к файлу xml.
Цитата firstarey:
всего 5 видов документов и не регулярно меняется схема документа (на данный момент уже 8). вот именно из-за изменения схемы и потребовалась помощь..
Вложения 05-01.zip »
|
Что, как надо извлечь, в каком виде надо представить результат.