XML-Datei parsen oder bestimmte Daten auflisten



  • Eigenhändig XML zu parsen ist wohl wirklich unnötig, dafür gibt's erprobte Bibliotheken. Je nach deinen Anforderungen reicht TinyXML, das kann halt kein DTD und kein XSL, ist aber ziemlich leichtgewichtig. Xerces ist fetter, kann aber auch mehr. Beide stehen unter lässigen Lizenzen.



  • Kóyaánasqatsi schrieb:

    Da die XML-Datei ASCII-Codiert ist, ...

    Nö, per Default sind die UTF-8, wenn du es nicht anders angibst... Am besten ein Lib verwenden, die gleich damit umgehen kann (->Xerces)



  • Eigenhändig XML zu parsen ist wohl wirklich unnötig, ...

    Ne extra lib für eine XML-Datei? Jedes mal die lib linken und sie durchlaufen lassen? Da ist es performancelastiger mit einer lib zu arbeiten, anstatt es eben selber zu parsen. Und bei diesem Format, ist das wirklich simpel.

    EDIT:
    Keine Ahnung von XML.



  • Ich danke für die regen Beiträge!

    Ok...

    Ich wollte jetzt die WoW Arsenal items auslesen und mir in eine neue Datei schreiben lassen.

    Ich arbeite nun mit der XmlReader Klasse.

    String ^charaktername = Convert::ToString(textBox1->Text);
    String ^servername = Convert::ToString(textBox2->Text);
    
    //in einer Zeile...
    String ^url = "http://eu.wowarmory.com/charactersheet.xml?r=" + servername + "&n=" + charaktername;
    			XmlReaderSettings ^settings = gcnew XmlReaderSettings;
    			settings->ProhibitDtd=false;
    
    			XmlReader ^wowXml = XmlReader::Create(url,settings);
    			while (wowXml->Read())
    			listBox1->Items->Add(wowXml->Value);
                            wowXml->Close();
    

    Unbehandelte Ausnahme:
    "Das erwartete DTD Markup wurde nicht gefunden!"

    Hm... Jetzt weis ich nicht mehr weiter!



  • Weis hier keiner weiter?

    WoW Arsenal mit C++ XmlReader auslesen und bestimmte Items anzeigen...?



  • Das ist doch nicht C++...
    Die Syntax kenn ich nicht, muss irgend was WIndows-Zeugsiges sein. ->falsches Forum.
    Und XmlReader - wo genau kommt die Klasse her? Gibts da keine ordentliche Doku dafür?



  • XmlReader ist eine Klasse aus dem .NET Framework. Die obengezeigte Syntax ist C++/CLI. Also falsches Forum.
    Simon

    Edit:
    Benutze doch die .NET DOM Impl. (XmlDocument, XmlNode, etc.)



  • Alles klar, werde ich mal testen.

    Ja, dass Forum ist für CLI das falsche, aber mir ist es auch egal in welcher Form ich auf das File zugreife, Hauptsache ich erhalte das gewünschte Resultat:

    - Auslesen der WoW Arsenal items.

    Ansonsten bitte ich das Thema in den .NET/CLI Bereich zu verschieben!(Danke)



  • Kannst du mal nen Link zu so nem XML-File posten? WoW Arsenal XML liefert keine brauchbaren Ergebnisse, nur ne Beschwerde, dass die Homepage per XML+XSL-Transformationen dargestellt wird und das den Highspeed-DSL'ern (zu denen ich nicht gehöre) zu langsam ist...



  • Habs jetzt raus!
    Vielen Dank für eure Vorschläge!



  • Kóyaánasqatsi schrieb:

    Eigenhändig XML zu parsen ist wohl wirklich unnötig, ...

    Ne extra lib für eine XML-Datei? Jedes mal die lib linken und sie durchlaufen lassen? Da ist es performancelastiger mit einer lib zu arbeiten, anstatt es eben selber zu parsen.

    Verstehe ich nicht, wieso soll es generell performancelastiger sein? Parsen musst du so oder so und der Code dafür ist dann sowieso in der Executable. Man könnte zwar ein wenig Performance sparen, wenn man das Parsen der Attribute oder bestimmter Kind-Elemente überspringt, aber inwiefern sich der Aufwand dafür lohnt ist fraglich, wenn die XML-Datei nur ein paar KB groß ist und sie vorher aus dem Netz geladen wird.



  • Kóyaánasqatsi schrieb:

    Eigenhändig XML zu parsen ist wohl wirklich unnötig, ...

    Ne extra lib für eine XML-Datei? Jedes mal die lib linken und sie durchlaufen lassen? Da ist es performancelastiger mit einer lib zu arbeiten, anstatt es eben selber zu parsen. Und bei diesem Format, ist das wirklich simpel.

    EDIT:
    Keine Ahnung von XML.

    Man merkt, dass du keine Ahnung von XML hast. Bei einem Parser der mal so locker flockig den XML Standard abdecken soll, hat man ganz andere Probleme als "Performance". (und wenn ich es mal vergleiche: Die Kosten, eine komplette, mehrere MB große XML Datei zu parsen gegen das Linken einer library beim start...ganz ehrlich...)





  • Hab mittlerweile geschaft was ich wollte...

    Wer Interesse an einem WoW Arsenal/Armory Parser hat, den er selbst in C++ coden kann wird schon bald Lösungsvorschläge auf http://www.hyperfull-cybernights.com finden...
    Möchte man dann z.B. nur seine Stats oder alle Items anzeigen lassen, geht das wunderbar.
    Dabei arbeite ich mit C++ /CLI/.NET. Aber der Code kann leicht in Standart C++ umgewandelt werden.

    mfg


Anmelden zum Antworten