Показать полную графическую версию : [решено] Очередной вопрос по парсингу XML
apozlevich
20-03-2013, 11:15
Извиняюсь за повтор темы, но я так и не сумел разобраться.
Есть .xml-файл, возьмем для примера первый попавшийся PAD-файл (http://www.nirsoft.net/pad/acm.xml). Надо вытащить оттуда несколько значений, для примера XML_DIZ_INFO\Program_Name.
Вообще, хочется на BAT, так как это часть простенького скрипта, но никак не могу найти простой парсер для этого. Цель — что-нибудь, куда на вход поступает "адрес" элемента, а на выход его значение, не знаю, как это правильно у XML называется.
Dragokas
26-03-2013, 04:32
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
Вообще, хочется на BAT »
А в PowerShell это элементарно делается http://www.outsidethebox.ms/14817/#Get-Content
apozlevich
26-03-2013, 11:00
Diskretor, спасибо, о чем-то таком я и мечтал.
Vadikan, да, PowerShell та еще вещЪ. Займусь изучением тогда, когда перестану глупые вопросы задавать :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.