PDA

Показать полную графическую версию : [решено] парсинг xml


firstarey
17-04-2014, 11:47
Суть:
в теме (http://forum.oszone.net/thread-278743.html) подробно рассмотрен парсинг 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 на всякий случай во вложении

Kazun
17-04-2014, 12:02
$Xml_stylesheet = $oXmlDocument."xml-stylesheet"

firstarey
17-04-2014, 14:25
$Xml_stylesheet = $oXmlDocument."xml-stylesheet"
»
так просто.. а я тут мучаюсь :(
благодарю




© OSzone.net 2001-2012