Parsowanie pliku xml przy użyciu pliku bat

0

Witam

Mam plik xml, z którego chciałbym wyciągnąć kilka danych przy użyciu bat'a.

Struktura pliku xml:

<?xml version="1.0" encoding="utf-8"?> <posdb> ... <services> <service name="300" type="STO" classname="npUpdtRcv.dll" startonload="true" quitonfail="true"> ... </service> <service name="300" type="WAY" classname="npway.dll" startonload="true" quitonfail="true"> <usedservices> ... <usedservice servicetype="STO"> <member name="**006**" alias="**POS006 FC**" /> <member name="**001**" alias="**POS001 DT**" /> <member name="**002**" alias="**POS002 DT**" /> <member name="**003**" alias="**POS003 DT**" /> <member name="**004**" alias="**POS004 MCC**" /> <member name="**1001**" alias="**KVS001**" /> <member name="**1002**" alias="**KVS002**" /> <member name="**1010**" alias="**KVS010**" /> <member name="**300**" alias="**WAYSTATION" **="**" /> <member name="**8000**" alias="**PRODMAIN|300**" /> <member name="**8001**" alias="**PRODBACK|006**" /> </usedservice> </usedservices> ... </service> <service name="301" type="WEB" classname="npwwebsrv.dll" startonload="true" quitonfail="true"> ... </service> ... </services> </posdb>

Dane pogrubione chciałbym zapisać w pliku txt w formie:
006 POS006 FC
001 POS001 DT
002 POS002 DT
003 POS003 DT
004 POS004 MCC
1001 KVS001
1002 KVS002
1010 KVS010
300 WAYSTATION
8000 PRODMAIN|300
8001 PRODBACK|006

Z góry dziękuj za pomoc lub sugestie jak te dane wyciągnąć.

3

Ja bym proponował taką zawartość pliku parse.bat:

parse.exe %1 %2

Wywołanie

parse.bat plik.xml out.txt

Teraz zostaje ci tylko napisać program parse.exe ;-) A tak poważnie? po co ci parser xml w bat????

0
xyzw napisał(a):

Ja bym proponował taką zawartość pliku parse.bat:

parse.exe %1 %2

Wywołanie

parse.bat plik.xml out.txt

Teraz zostaje ci tylko napisać program parse.exe ;-) A tak poważnie? po co ci parser xml w bat????

Nie za bardzo pomogłęś :(

Chodzi o to, że ten plik xml będzie się zmieniał, a potrzebne mi są wyżej wymienione informacje z częstotliowością odświeżania raz dziennie. Chicałem mieć bat'a, bo tym podpioł go sobie jako task, który by się wykonywał raz dziennie.

0

A zwykłej aplikacji nie możesz przez harmonogram odpalić, bo?

0
Rev napisał(a):

A zwykłej aplikacji nie możesz przez harmonogram odpalić, bo?

I tu jest problem, bo moja znajomość innych jezyków programowania jest na poziomie znikomym. :(

0

No to dział "praca" masz niżej, jestem pewien, że wielu programistów byłoby chętnych przeskrobać takie coś.

0

I tu jest problem, bo moja znajomość innych jezyków programowania jest na poziomie znikomym.

Innych? To ty bata za język programowania uważasz? lolol.

Z tego co się orientuję to w windowsie się tak nie da przy domyślnych narzędziach (Thanks, M$), ale programik łatwo napisać, może już czas zacząć się uczyć programować skoro bat nie wystarcza?

0

Panowie

Po pierwsze nie jestem programistą i nie zamierzam nikomu zabierać z tego tytułu chleba. Po drugie liczyłem jedynie na pomoc doświadczonych osób, a nie złośliwe komentarze. Faktycznie batcha ciężko uznać za jakiś jakiś programowania, ale elementarne rzeczy można uzyskać.

Co do osobnych programów udało mi się znaleźć aplikację (a właściwie sam plik exe) XmlStarlet (GUIDE dla ciekawskich: http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html). Co prawda jeszcze tego nie rozgryzłem, ale może komuś się przyda.

Jak już pisałem wcześniej z góry dziękuje za pomoc, tym osobą które chcą pomóc.

2

W pliku wsadowym się nie da (bez zewnętrznych narzędzi oczywiście).

W PowerShellu się da - System.Xml.XmlDocument oraz GetElementsByTagName() załatwiają sprawę.

0

Dzięki za podpowiedz, ale poradziłem sobie przy użyciu tego narzędzia XMLStarlet.

Może komuś się przyda ta komenda:
xml sel -T -t -m PosDB/Services/Service[@type='WAY']/UsedServices/UsedService[@serviceType='STO']/Member -s N:D:- "@alias" -v "concat(@name,' ',@alias)" -n file.xml >> test.txt

1 użytkowników online, w tym zalogowanych: 0, gości: 1