Eine Bestimmte Zeile bzw. ein Wort aus XML mit Bedingung auslesen
Hallo zusammen,
ich möchte mithilfe von einem batch oder vbs eine bestimmte Zeile in XML (noch besser wäre das Wort in der Zeile) auslesen und in eine neue txt schreiben.
die Schwierigkeit hier ist: soll nur aulesen wenn das gesuchte Wort einen Flag hat.
Beispiel das gesuchte Wort ist "Tische"
und hat 3 zeilen darunter einen Flag "Bingo" (ist auch die Schlüssel für eine LÖSUNG)
dann soll Tisch ausgelesen werden sonst nicht.
vielen Dank für eure Hilfe.
hier ist ein Teil der Beispiel Datei:
<Product ID="PT10155" UserTypeID="Produkttyp">
<Name>balicí technika</Name>
<AttributeLink AttributeID="Tische" Mandatory="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">2000</Value>
<Value AttributeID="Bingo">Y</Value>
</MetaData>
</AttributeLink>
<AttributeLink AttributeID="hledani_balici technika">
</AttributeLink>
<Values>
ich möchte mithilfe von einem batch oder vbs eine bestimmte Zeile in XML (noch besser wäre das Wort in der Zeile) auslesen und in eine neue txt schreiben.
die Schwierigkeit hier ist: soll nur aulesen wenn das gesuchte Wort einen Flag hat.
Beispiel das gesuchte Wort ist "Tische"
und hat 3 zeilen darunter einen Flag "Bingo" (ist auch die Schlüssel für eine LÖSUNG)
dann soll Tisch ausgelesen werden sonst nicht.
vielen Dank für eure Hilfe.
hier ist ein Teil der Beispiel Datei:
<Product ID="PT10155" UserTypeID="Produkttyp">
<Name>balicí technika</Name>
<AttributeLink AttributeID="Tische" Mandatory="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">2000</Value>
<Value AttributeID="Bingo">Y</Value>
</MetaData>
</AttributeLink>
<AttributeLink AttributeID="hledani_balici technika">
</AttributeLink>
<Values>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139892
Url: https://administrator.de/contentid/139892
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo!
versuch mal folgenden ansatz (ungetestet )
mein_ergebnis.vbs
das sollte dir die gesame 3. Zeile auslesen...
Falls Du nur den Teil zwischen den " brauchst, meld dich ncohmal...
lg
Edi
versuch mal folgenden ansatz (ungetestet )
mein_ergebnis.vbs
zeilennummer = 0
ausgabe = 0
datei= "mein.xml"
Set fs = CreateObject("Scripting.FileSystemObject")
Set File = fs.OpenTextFile(datei , 1, true)
Do While not file.AtEndOfStream
zeilennummer = zeilennummer+1
zeile = (file.ReadLine)
if zeilennummer = 3 then
inhaltneu = zeile
end if
if zeilennummer = 6 AND instr(1, zeile, "bingo", 1) then
ausgabe = 1
end if
Loop
if ausgabe = 1 then
Wortbeginn = instr(inhaltneu, Chr(34))
wortende = instr(wortbeginn+1, inhaltneu, Chr(34))
wort = mid(inhaltneu, wortbeginn+1, wortende-wortbeginn-1)
datei1 = "neu.txt"
set dateineu = fs.opentextfile(datei1, 8, true,0)
dateineu.write wort & vbcrlf
end if
das sollte dir die gesame 3. Zeile auslesen...
Falls Du nur den Teil zwischen den " brauchst, meld dich ncohmal...
lg
Edi
Hallo!
ich bin mir nicht sicher, ob ich Dich richtig verstehe...
Poste mal einen längeren Abschnitt Deiner xml-Datei (zumindest so lange, dass das gesuchte Wort 3 mal und Bingo nur 2 mal vorkommt...), dann kann ich mir das Problem vielleicht besser vorstellen.
ps: falls Du dir mit Englisch leichter tust, ist das für mich kein Problem
lg
Edi
ich bin mir nicht sicher, ob ich Dich richtig verstehe...
Poste mal einen längeren Abschnitt Deiner xml-Datei (zumindest so lange, dass das gesuchte Wort 3 mal und Bingo nur 2 mal vorkommt...), dann kann ich mir das Problem vielleicht besser vorstellen.
ps: falls Du dir mit Englisch leichter tust, ist das für mich kein Problem
lg
Edi
@Edi
Als Ansatz (komme gerade auch nicht gut dazu):
In einem Array lässt sich's leichter "nach vorne" schauen ...
... und die 400000 Zeilen werden ja wohl im Speicher Platz haben ...
Grüße
bastla
Als Ansatz (komme gerade auch nicht gut dazu):
Inhalt = Split(fs.OpenTextFile(datei), vbCrLf)
For i = 0 To UBound(Inhalt)
...
... und die 400000 Zeilen werden ja wohl im Speicher Platz haben ...
Grüße
bastla
@ bastla:
danke für deine Anmerkung, habs jetzt aber doch anders gemacht...
@sommerzeit:
meine Freundin hat uns noch schnell einen Imbiss zubereitet, damit wir uns gestärkt auf den Weg machen können...
(und die Zeit hat zu folgendem - getestetem - Ergebnis gereicht):
lg
Edi
danke für deine Anmerkung, habs jetzt aber doch anders gemacht...
@sommerzeit:
meine Freundin hat uns noch schnell einen Imbiss zubereitet, damit wir uns gestärkt auf den Weg machen können...
(und die Zeit hat zu folgendem - getestetem - Ergebnis gereicht):
datei= "mein.xml"
Set fs = CreateObject("Scripting.FileSystemObject")
Set File = fs.OpenTextFile(datei , 1, true)
Do While not file.AtEndOfStream
zeile = (file.ReadLine)
if instr(zeile, "AttributeLink AttributeID") >= 1 then
temp = zeile
end if
if instr(1, zeile, "bingo", 1) then
call schreiben(temp)
end if
Loop
function schreiben(inhalt)
datei1 = "neu.txt"
set dateineu = fs.opentextfile(datei1, 8, true,0)
dateineu.write inhalt & vbcrlf
end function
lg
Edi
[OT]
@Edi
[/OT]
Grüße
bastla
@Edi
Danke für die Blumen
Ich müsste lügen, wenn ich behaupten würde, dass ich derlei virtuelle Pflänzchen nicht selbst gerne entgegennehme - daher reiche ich sie auch mit Freude weiter (besonders, wenn mir eine Lösung so gut gefällt) ... [/OT]
Grüße
bastla