Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] парсинг xml

Ответить
Настройки темы
PowerShell - [решено] парсинг xml

Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Изменения
Автор: firstarey
Дата: 16-05-2014
Суть:
в теме подробно рассмотрен парсинг 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 на всякий случай во вложении

Отправлено: 11:47, 17-04-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


$Xml_stylesheet = $oXmlDocument."xml-stylesheet"
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 17-04-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Kazun:
$Xml_stylesheet = $oXmlDocument."xml-stylesheet"
»
так просто.. а я тут мучаюсь
благодарю

Отправлено: 14:25, 17-04-2014 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] парсинг xml

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] парсинг xml :) firstarey Скриптовые языки администрирования Windows 10 07-03-2014 12:52
CMD/BAT - Парсинг XML/TXT mxm199 Скриптовые языки администрирования Windows 10 17-07-2012 12:34
PowerShell - [решено] парсинг XML файла dosperados Скриптовые языки администрирования Windows 2 02-07-2012 21:02
7 / 2008 R2 - dot1x + xml profile + unattend.xml HaeMHuK Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 20-10-2011 12:43
[решено] проверка XML-файла на соответствие XML schema в IE 6 и Firefox 2 dimait Вебмастеру 4 23-08-2007 02:02




 
Переход