Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] парсинг xml (http://forum.oszone.net/showthread.php?t=281018)

firstarey 17-04-2014 11:47 2339332

парсинг 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 на всякий случай во вложении

Kazun 17-04-2014 12:02 2339341

$Xml_stylesheet = $oXmlDocument."xml-stylesheet"

firstarey 17-04-2014 14:25 2339440

Цитата:

Цитата Kazun
$Xml_stylesheet = $oXmlDocument."xml-stylesheet"
»

так просто.. а я тут мучаюсь :(
благодарю


Время: 08:43.

Время: 08:43.
© OSzone.net 2001-