 |
|
парсинг xml
Суть:
в теме подробно рассмотрен парсинг xml.
возникла заминка, а именно каким образом можно загнать в переменную значение xml-stylesheet?
у меня это выглядит следующим образом:
Код:
$Files = Get-ChildItem * -Include "*.xml"
Write-Host 'найдено файлов xml:' $Files.count -BackgroundColor Cyan -ForegroundColor DarkBlue
# Каждый объект из $Files по очереди помещяется в переменную $sSourceFile
ForEach ($sSourceFile in $Files)
{
# Удаляем 4 знака от имени файла и добавляем то что нужно
$FileOutNameCSV = $sSourceFile.name.Substring(0,($sSourceFile.name.Length -4)) + '.csv'
$FileOutNameXML = $sSourceFile.name.Substring(0,($sSourceFile.name.Length -4)) + '_mod.xml'
# изменяем файл. расставляем переносы.
Write-Host 'создаем файл:' `t `t $FileOutNameXML
(gc $sSourceFile) -replace "><",">`n<" | out-file -encoding 'default' $FileOutNameXML
# выбираем строку чтоб узнать тип документа и номер схемы
$Doc_String = Get-Content $FileOutNameXML | Select-String -pattern "href="
$Doc_String = [string] $Doc_String
# разбить на подстроки по [пробелу = " /] и берем нужные подстроки
$Doc_type_split = $Doc_String -split '[="/]'
# в итоге имеем тип документа и версию
$Doc_type = $Doc_type_split[11]
$Doc_ver = $Doc_type_split[12]
}
хотелось бы сделать это не внося изменения в файл, а более подходящим для этого способом:
Код:
$oXmlDocument = New-Object -TypeName System.Xml.XmlDocument
$oXmlDocument.load($sSourceFile)
$Xml_stylesheet = $oXmlDocument.xml-stylesheet
$Xml_stylesheet
но все упирается в название узла xml-stylesheet. PowerShell воспринимает дефис и выдает ошибку:
Код:
Необходимо предоставить выражение для значения справа от оператора "-".
экранировать мне не удалось.
xml на всякий случай во вложении
|
$Xml_stylesheet = $oXmlDocument."xml-stylesheet"
|
Цитата:
Цитата Kazun
$Xml_stylesheet = $oXmlDocument."xml-stylesheet"
»
|
так просто.. а я тут мучаюсь :(
благодарю
|
Время: 08:43.
© OSzone.net 2001-