Компьютерный форум 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=256703)

apozlevich 20-03-2013 11:15 2114853

Очередной вопрос по парсингу XML
 
Извиняюсь за повтор темы, но я так и не сумел разобраться.
Есть .xml-файл, возьмем для примера первый попавшийся PAD-файл. Надо вытащить оттуда несколько значений, для примера XML_DIZ_INFO\Program_Name.

Вообще, хочется на BAT, так как это часть простенького скрипта, но никак не могу найти простой парсер для этого. Цель — что-нибудь, куда на вход поступает "адрес" элемента, а на выход его значение, не знаю, как это правильно у XML называется.

Dragokas 26-03-2013 04:32 2118644

apozlevich, попробуйте комбинированный сценарий:

main.cmd
Код:

@echo off
SetLocal
Set $Query=http://www.nirsoft.net/pad/acm.xml
Set $Node=XML_DIZ_INFO/Program_Info/Program_Name

for /f "delims=" %%A in ('cscript.exe //nologo "xml_parse.vbs" "%$Query%" "%$Node%"') do set "$RetValue=%%A"

echo.%$RetValue%
pause

XML_parse.vbs
Код:

Option Explicit
'On Error Resume Next
dim sQuery, sRetValue, objRemXML

Sub XMLRequest(sQuery, objRemXML)
    Set objRemXML = CreateObject("Microsoft.XMLDOM")
    objRemXML.async = False
    objRemXML.Load (sQuery)
End Sub

Sub XMLParse(objRemXML, sNode, sRet)
    Dim objXMLret
    Set objXMLret = objRemXML.SelectSingleNode(sNode)
    If Err.Number <> 0 Then
        'MsgBox "Error of IPRange"
      Else
        If Not objXMLret Is Nothing Then sRet = objXMLret.Text
    End If
End Sub

sQuery = WScript.Arguments(0)

'Initialize
Call XMLRequest(sQuery, objRemXML)

Call XMLParse(objRemXML, WScript.Arguments(1), sRetValue)

Wscript.Echo sRetValue

Set objRemXML = Nothing


Vadikan 26-03-2013 09:36 2118711

Цитата:

Цитата apozlevich
Вообще, хочется на BAT »

А в PowerShell это элементарно делается https://www.outsidethebox.ms/14817/#Get-Content

apozlevich 26-03-2013 11:00 2118743

Diskretor, спасибо, о чем-то таком я и мечтал.

Vadikan, да, PowerShell та еще вещЪ. Займусь изучением тогда, когда перестану глупые вопросы задавать :)


Время: 23:02.

Время: 23:02.
© OSzone.net 2001-