Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Eine Bestimmte Zeile bzw. ein Wort aus XML mit Bedingung auslesen

Frage Entwicklung Batch & Shell

Mitglied: sommerzeit

sommerzeit (Level 1) - Jetzt verbinden

06.04.2010 um 09:09 Uhr, 6735 Aufrufe, 11 Kommentare

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>
Mitglied: Edi.Pfisterer
06.04.2010 um 12:59 Uhr
Hallo!
versuch mal folgenden ansatz (ungetestet )

mein_ergebnis.vbs
01.
zeilennummer = 0 
02.
ausgabe = 0 
03.
datei= "mein.xml" 
04.
Set fs = CreateObject("Scripting.FileSystemObject") 
05.
Set File = fs.OpenTextFile(datei , 1, true) 
06.
Do While not file.AtEndOfStream 
07.
        zeilennummer = zeilennummer+1 
08.
        zeile = (file.ReadLine) 
09.
        if zeilennummer = 3 then 
10.
                inhaltneu =  zeile 
11.
        end if 
12.
                if zeilennummer = 6 AND instr(1, zeile, "bingo", 1) then 
13.
                ausgabe = 1 
14.
        end if 
15.
Loop 
16.
 
17.
if ausgabe = 1 then 
18.
        Wortbeginn = instr(inhaltneu, Chr(34)) 
19.
        wortende = instr(wortbeginn+1, inhaltneu, Chr(34)) 
20.
        wort = mid(inhaltneu, wortbeginn+1, wortende-wortbeginn-1) 
21.
        datei1 = "neu.txt" 
22.
        set dateineu = fs.opentextfile(datei1, 8, true,0) 
23.
        dateineu.write wort & vbcrlf 
24.
end if
das sollte dir die gesame 3. Zeile auslesen...
Falls Du nur den Teil zwischen den " brauchst, meld dich ncohmal...

lg
Edi
Bitte warten ..
Mitglied: sommerzeit
06.04.2010 um 13:42 Uhr
Hallo Edi,

vielen Dank für deine schnelle Antwort,

diesen Script funktioniert nur wenn Bingo in Zeile 6 steht, wie oben geschrieben nur Bingo ist der Schlüssel, die Zeilen nur darf mann nicht benutzen, sonst bekommte ich nur eine zeile.

den Teil der XML, ist nur eine Kleine Ausschnitt, in der wirklichkeit hat hat diese Datei 400 000 Zeilen, und Bingo kann 100 000 mal vorkommen.

ich hoffe ich habe es richtig erklärt.

vielen Dank nochmal

gruß sommerzeit
Bitte warten ..
Mitglied: Edi.Pfisterer
06.04.2010 um 13:52 Uhr
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
Bitte warten ..
Mitglied: sommerzeit
06.04.2010 um 14:24 Uhr
Vielen Dank nochmal für deine Hilfe,

hier ist ein größere Textabschnitt.

in diesem Fall soll die Ausgabe wie folgt sein:

<AttributeLink AttributeID="Tische="true">
<AttributeLink AttributeID="Stühle">
<AttributeLink AttributeID="Fenster="true">

Beginn der XML
<Product ID="MT10163" UserTypeID="Merkmalstyp">
<Name>klešte</Name>
<AttributeLink AttributeID="Tische="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">2040</Value>
<Value AttributeID="Bingo">Y</Value>
</MetaData>
</AttributeLink>
<AttributeLink AttributeID="Stühle">
<MetaData>
<Value AttributeID="kwesto.sortsequence">2080</Value>
<Value AttributeID="Bingo">Y</Value>
</MetaData>
</AttributeLink>
<AttributeLink AttributeID="Wagen" Mandatory="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">2060</Value>
</MetaData>
</AttributeLink>
<AttributeLink AttributeID="Fenster="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">2020</Value>
<Value AttributeID="Bingo">Y</Value>
</MetaData>
<AttributeLink AttributeID="pro vysku spony" Mandatory="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">3020</Value>
</MetaData>
</AttributeLink>
<AttributeLink AttributeID="druh ovladani" Mandatory="true">
<MetaData>
<Value AttributeID="kwesto.sortsequence">3010</Value>
</MetaData>
Bitte warten ..
Mitglied: Edi.Pfisterer
06.04.2010 um 14:43 Uhr
Hallo!
Ich gehe jetzt mit meiner Holden ein bissl spazieren, schreib Dir den entsprechenden code aber am Abend beim Fernsehen, wenn ich heimkomme ...

lg
Edi
Bitte warten ..
Mitglied: bastla
06.04.2010 um 14:44 Uhr
@Edi
Als Ansatz (komme gerade auch nicht gut dazu):
01.
Inhalt = Split(fs.OpenTextFile(datei), vbCrLf) 
02.
For i = 0 To UBound(Inhalt) 
03.
   ...
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
Bitte warten ..
Mitglied: Edi.Pfisterer
06.04.2010 um 15:16 Uhr
@ 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):

01.
datei= "mein.xml" 
02.
Set fs = CreateObject("Scripting.FileSystemObject") 
03.
Set File = fs.OpenTextFile(datei , 1, true) 
04.
Do While not file.AtEndOfStream 
05.
        zeile = (file.ReadLine) 
06.
        if instr(zeile, "AttributeLink AttributeID") >= 1 then 
07.
                temp = zeile 
08.
        end if 
09.
        if instr(1, zeile, "bingo", 1) then 
10.
        call schreiben(temp) 
11.
        end if 
12.
Loop 
13.
 
14.
function schreiben(inhalt) 
15.
        datei1 = "neu.txt" 
16.
        set dateineu = fs.opentextfile(datei1, 8, true,0) 
17.
        dateineu.write inhalt & vbcrlf 
18.
end function
lg
Edi
Bitte warten ..
Mitglied: sommerzeit
06.04.2010 um 15:38 Uhr
Hallo Edi und Bastler,

Vielen herzlichen Dank, es hat SUPER funktioniert.
Bitte warten ..
Mitglied: bastla
06.04.2010 um 15:52 Uhr
Hallo Edi!

Lässige Lösung - ich hätte das "3 zeilen darunter" unnötig ernst genommen ...

Grüße
bastla
Bitte warten ..
Mitglied: Edi.Pfisterer
06.04.2010 um 19:57 Uhr
@ sommerzeit:
gern geschehen, freut mich, wenn ich Dir helfen konnte...

@ bastla:
Danke für die Blumen - da sie von Dir kommen, freut mich das Lob besonders...
lg
Bitte warten ..
Mitglied: bastla
06.04.2010 um 22:26 Uhr
[OT]
@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
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell bestimmtes XML Element auslesen
gelöst Frage von H41mSh1C0RBatch & Shell6 Kommentare

Hi@PS Profi's, Ein Entry ist wiefolgt aufgebaut: Wenn ich nun im Datagrid mir eine Zeile aussuche will ich mir ...

Batch & Shell
Batch bei bestimmten Wörtern jeweilige Zeile entfernen
gelöst Frage von Beginner01Batch & Shell19 Kommentare

Hallo an Alle, ich bin mal wieder einer derjenigen, die einfach keine Ahnung haben und Alles haben wollen ;-) ...

Batch & Shell
Text von zeile mit wort, bis ziele mit wort
gelöst Frage von SaintwolfBatch & Shell5 Kommentare

suche eine Batch die eine txt auswertet inhalt: text a text b text c Fehler fehler in KB4568792 text ...

Batch & Shell
Bestimmte Zeile einer Textdatei mit Batch auslesen
gelöst Frage von PinkFLuffyUnicornBatch & Shell2 Kommentare

Hi, ich habe ein kleines Batch Script, welches mir den Status der Firewall ausgeben soll(ob an oder aus) der ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 104 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell16 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...