You are not logged in.
Pages: 1
I need to extract 'Parameter ids' from an xml file
.
.
<Parameter id="qwdZjJLqbgeq0Mz9V90pHA==" subreportfilter="True">
<Name>Mark date</Name>
<Type>Date</Type>
<PromptText>MarkBeforeDate</PromptText>
<Values>
<Date>2011-02-21T08:55:23</Date>
</Values>
</Parameter>
<Parameter id="G4eLZ0AEAuyM7z6pd69+8Q==" subreportfilter="True">
<Name>Mark date</Name>
<Type>Date</Type>
<PromptText>MarkAfterDate</PromptText>
<Values>
<Date>2010-08-30T09:21:30</Date>
</Values>
</Parameter>
</ReportParameters>
.
.
To make this futureproof, I would like to extract the Parameter ids where the <PromptText> is 'MarkBeforeDate' and 'MarkAfterDate' (ie qwdZjJLqbgeq0Mz9V90pHA== and G4eLZ0AEAuyM7z6pd69+8Q== in the example data above) Could this be done with a cmd script?
If impossible to reference the PromptText, as there are only two Paramter ids in the current file, which appear to be in a consistent order, I could extract the parameters as following
<Parameter id="
but I can't be certain whether the file will continue to only contain the two Parameters in the future.
Offline
Not tested:
FOR /F "delims=^" tokens=1,2" %%A in ('type xmlfile.xml ^| find ^"Parameter id=^"') do (
echo %%B
echo %%B >> out.file
)
But I would recommend you to use xml startlet:
http://xmlstar.sourceforge.net/
Offline
'fraid this doesn't work - its not possible to use a " as a delims character, even if escaped.
this works (commented for benefit of anybody else coming across it) so long as the ¿ character isn't in the Parameter ID.
@echo off
setlocal EnableDelayedExpansion
:: Read each line of file that contains "Parameter id=" into %%a
for /f "tokens=* usebackq" %%a in (`type test.xml ^| find "Parameter id="`) do (
set z=%%a
:: change quote charas into ¿ (ok so long as Parameter id does not contain ¿
set z=!z:"=¿!
:: extract text between 1st and 2nd ¿ (originally " )
for /f "tokens=1,2 delims=¿" %%a in ("!z!") do echo %%b
)
Thank you for
But I would recommend you to use xml startlet:
http://xmlstar.sourceforge.net/
which I will find very useful. I don't think I will use it for this particular purpose though as the script will be deployed on customer servers and I would rather not deploy external utilities, even open source ones.
Would still appreciate an all script based solution that will work if additional Parameters are added to text.xml (the contents of this file are not under my control)
Offline
I test this, based in npocmaka script:
FOR /F tokens^=2^ delims^=^" %%A in (
'type xmlfile.xml ^| find "Parameter id="'
) do (
echo:%%A
)
pause
Last edited by carlos (13 Nov 2012 05:03)
Offline
More improved:
FOR /F tokens^=2^ delims^=^" %%A in ('find "Parameter id=" xmlfile.xml') do echo:%%A
Last edited by carlos (13 Nov 2012 05:50)
Offline
Many thanks Carlos. The one line solutions are the best!
Nick
Offline
Pages: 1