[VB.NET] "Verstecktes" XML auslesen

hubbl

Erfahrenes Mitglied
Hallo ihr,

ich bin gerade in meinem Praktikum und hab ne Aufgabe zu lösen.
Und zwar habe ich ein Textfile das folgende Struktur hat..:

PHP:
------------------------------------------------------------------------------------------
Timestamp: 28.02.2006 22:02:53
Message: Succesfully called Update Method: <?xml version="1.0" encoding="utf-8"?><produkt id="FS0002000" artikelnummer="Z050200" produktbezeichnung="censored" seitenzahl="120" breite_mm="210" laenge_mm="280" isbn_nr="" evt="asdfasdfasdf" einbandart_LOV_ID="13" prod_ausgabe="" prod_jahr="2005" produktnummer="Z0502" verfuegbar="8" verfuegbarkeit="1142"><bundle></bundle><preis waehrung="Eur">7.5000</preis><preis waehrung="SFr">14.8000</preis></produkt>
-------------------------------------------------------------------------------------------

Diese Daten liegen im hundertfachen vor in dieser Datei. Alles untereinander genau das was ihr da oben seht.
Ich muss jetzt die ganzen XML Elemente mit ihren Werten und den Timestamp auslesen können um mit ihnen weiterzuarbeiten...
Ich weis im moment einfach net weiter wie ich sowas anstellen soll..
Kann mir jmd weiterhelfen und n kleinen Tipp geben?

Gruß Dennis
 
Hallo Dennis,

da die Struktur ja festzustehen scheint, sollte das nicht so problematisch sein.

Du kannst die Datei (als Textdatei) zeilenweise einlesen und bei Zeilen, die mit "Message: Succesfully called Update Method:" beginnen, den XML-String herauslösen. Diesen kannst du dann mit "XmlDocument.LoadXml()" einlesen und weiterverabeiten.

Gruß
MCoder
 
Verstehe Dankschön.
Und wie genau tue ich deine Schritte? Also wie das erkennen des: "Message: Succesfully...." und des XML-Strings.
Theoretsiche Alghorythmen was ich wie mache hatte ich schon viele, aber als ich mir dann ausgemalt habe wie ich das technisch umsetze kam mir das kot*** :)

gruß
 
Hallo,

mal ganz schnell ein kleines Beispiel (ungetestet):
C#:
using( TextReader reader =  new StreamReader("datei.txt") )
{
    string strLine;

    while( (strLine = reader.ReadLine()) != null )
    {
        int nPos = strLine.IndexOf("<?xml"); // XML-String suchen

        if( nPos != (-1) )
        {
            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(strLine.SubString(nPos)); // XML laden
                
                // TODO: XML-Daten verarbeiten
            }
            catch( Exception e )
            {
                // Fehler, kein gültiges XML
            }                                
        }
    }
}
Gruß
MCoder
 
Hallo,
so ich habe es nun geschafft das ich die einzelnen XML Teile auslesen kann.
Wie kann ich es nun bewerkstelligen (elegant am besten) das ich die einzelnen Atribute und Atributwerte einzeln erhalte?
Ich Hab schon ein wenig gesucht aber ihc finde in meinem .net keine passenden Xml Handler oder sowas ähnliches..
Also ich möchte das ich später folgende Ausgabe habe:
PHP:
<produkt id="FS0002000" 
artikelnummer="Z050200" 
produktbezeichnung="censored" 
seitenzahl="120" 
breite_mm="210" 
laenge_mm="280" 
isbn_nr="" evt="asdfasdfasdf" 
einbandart_LOV_ID="13" 
prod_ausgabe="" 
prod_jahr="2005" 
produktnummer="Z0502" 
verfuegbar="8" 
... und so weiter

Kann mir da noch jmd helfen?
 
Hallo,

wenn du den String in ein XmlDocument geladen hast, gibt es ein Reihe von Methoden, um die Daten da rauszuziehen.
Du solltest dir da die Klassen XmlDocument, XmlElement und XmlNode genauer anschauen.
Hier mal ein kleines Beispiel in C#:
C#:
doc.LoadXml(strLine.SubString(nPos)); // XML laden

string strId          = doc.DocumentElement.GetAttribute("id");
string strArikelnumer = doc.DocumentElement.GetAttribute("artikelnummer");
// ... weitere Attribute lesen

foreach( XmlNode child in doc.DocumentElement.ChildNodes )
{
    if( child.Name == "preis" )
    {
        string strWaehrung = child.GetAttribute("waehrung");
        string strPreis    = child.Value;
    }
}
Gruß
MCoder
 

Neue Beiträge

Zurück