Hi, ich check das nicht. Wie kann man am besten aus einer XML-Datei Daten auslesen und damit eine neue XML-Datei generieren? Es gibt da so Sachen wie JSON, DCOM etc., aber bis man das verstanden hat...Puhh. Was sollte man nehmen? C# bietet ja auch einiges an, aber gehts nicht etwas gehirngerechter ?
Falls du ein XSD für input/output hast kannst du dir für Java mittels des XJC Tools (ab Java 1.5 standardmäßig enthalten) Klassen erzeugen lassen welche die das Parsen abnehmen und kannst dann einfach "umkopieren" und automatisch als XML ausgeben lassen. Ansonsten ist halt die frage was "hirngerecht" angeht, wenn du etwas haben willst das viel Denkarbeit erfordert wäre z.B. XSLT das Mittel der Wahl.
Was willst du denn ungefähr machen? Mit deiner derzeitigen Angabe kann man dir alles und nichts empfehlen. Schön geht es mit XSL(T). Ist aber meiner Meinung nach nur für einfache XML-Transformationen geeignet, weil es schnell recht komplex wird. Musst du dich halt auch ein bisschen einarbeiten - für eine einfache Sache wird es gehen, wird aber dann schnell schwieriger.
Zusätzlich zu der Frage, was du machen willst, vielleicht auch noch, was du bisher kannst. Mit XSLT geht das ganz ohne "richtiges" Programmieren, und ansonsten haben so ziemlich alle moderenen Programmiersprachen erweiterungen für XML. Neben C# gingen auch Python, Java, PHP, Perl und bestimmt auch C++ und viele andere Sprachen, die in den letzten 15 Jahren weiterentwickelt wurden. Wenn du es ganz pervers machen willst, sollte das auch rein in Javascript gehen. Da müsstest du nichtmal einen extra Interpreter / Compiler installieren.
Verwirrter Anfänger schrieb: > Mit XSLT geht das ganz ohne "richtiges" Programmieren Ist das eine Art XSLT mit grafischem Mapping und welches Tool kann das?
McFly schrieb: > Verwirrter Anfänger schrieb: >> Mit XSLT geht das ganz ohne "richtiges" Programmieren > > Ist das eine Art XSLT mit grafischem Mapping und welches Tool kann das? Um etwas mehr Verwirrung zu stiften XSLT ist Turing-vollständig (könnte alles berechnen, was man normalerweise mit dafür geeigneteren Sprachen machen würde) http://www.unidex.com/turing/utm.htm C# http://msdn.microsoft.com/en-us/library/bb675186(VS.90).aspx oder man nutzt LINQ statt XSLT http://www.infoq.com/news/2007/07/LINQ-and-XSLT wenn's besser "passt"
Arc Net schrieb: > Turing-vollständig (könnte alles berechnen, was man normalerweise mit dafür > geeigneteren Sprachen machen würde) Coole Definition für Turing-Vollständigkeit ;-)
Hi McFly, hier kommt ein steinaltes Beispiel die XML-Daten mit dBASE IV 2.0 zu extrahieren. http://u880.bplaced.net/merxml1a.prg.txt Das Tool war schnell erstellt, um nach einer Systemumstellung die Daten zu verarbeiten. Es geht nur um das hoffentlich leicht verständliche Prinzip, das mit jeder Programmiersprache möglich ist. Später haben wir den PHP-Parser eingesetzt oder PDF's zu Text --> Daten konvertiert.
McFly schrieb: > gibts irgendwo einen allgemeingültigen Algorithmus mit Bild? Wie soll das gehen? In einem stehen bspw. Längen in Seemeilen, im anderen in intl. Meilen, im nächsten in amerik. Meilen, gebraucht wird aber km. Wenn die Seemeilen wie üblich mit nm (nautische Meile) abgekürzt werden und/oder nicht klar ist was mit ml (Milliliter/Meile(welche intl. o. US)) oder m (Meter/Meile) gemeint ist, weil nicht mi für Meile benutzt wurde, hilft das alles nichts. Wenn's um das "API" an sich geht wären DOM, XPath die Stichworte (bzw. die Entsprechungen im verwendeten Framework. Z.B. XPathNavigator .Net) http://msdn.microsoft.com/en-us/magazine/cc164116.aspx
Genau vor diesem Problem stand ich vor einiger Zeit auch. Ich wollte für meine Software unbedingt ein xml-lesliches Format. DOM/SAX war dabei allerdings mehr Aufwand als Nutzen und so hab ich den Parser kurzerhand selbst programmiert. Liest die Baumstruktur (öffnende/schließende Tags/Attribute) und macht daraus Elemente aus Pfad und Attribut pro Pfadebene. Beim Schreiben wird das einfach wieder in Tags etc umgesetzt. Einfügen/Lesen/Löschen von Elementen ist durch eine minimalistische Abfrage-Sprache umgesetzt. Die Umsetzung (alles in C, ohne irgendwelche libs und damit 'from scratch') war streckenweise etwas knifflig, ging aber. Bisher läuft das sehr gut. Also nur Mut ;)
>Genau vor diesem Problem stand ich vor einiger Zeit auch. Ich wollte für >meine Software unbedingt ein xml-lesliches Format. DOM/SAX war dabei >allerdings mehr Aufwand als Nutzen und so hab ich den Parser kurzerhand >selbst programmiert. deshalb mach man das ja auch nicht selber... idealerweise macht man sich dazu erst mal eine http://de.wikipedia.org/wiki/XML_Schema dann ist das ganz auch für andere/externe mal (relativ) gut dokumentiert dann gibt es (sollte es) ja für "jede" Programmiersprache ein XML-databinding geben (in delphi gibts das zumindest ;-) ) dass daraus die entsprechenden Objekte erzeugt mit einem xml-editor (der xsd unterstützt) und dem XML-databinding hat man(n) dann quasi mit wenigen Mausklicks alles beisammen) (kommt aber natürlich immer auf Einsatzzweck und Ressourcen an.. was man dann verwendet..) > Wie kann man am besten aus einer XML-Datei Daten >auslesen und damit eine neue XML-Datei generieren? das würde ich u.U auch mit xslt machen ps: ich sehe gerade dass meine Antwort der 1. Antwort in diesem thread sehr ähnelt.. aber egal, doppelt hält besser ;-)
1) Der [b]SAX-Parser[/b] ist ein Stream-Parser-API mit CALLBACK-Funktionen. Er braucht kaum Hauptspeicher. 2) Mit der Funktion startElement() von SAX hinterlegst du eine Funktion, die dann anspricht wenn der Elementname (wird dir als Parameter übergeben) für dich interessant ist. Prüfen des Namens musst du implementieren. 3) Mit startElement() und endElement() kannst du mit Unterfunktionen oder einem Schachtelungszähler ermitteln, ob es sich um ein gleichnamiges Element handelt, das aber ein anderes Elternelement hat oder das in einer anderen Ebene steht. 4) Implementierungen gibt es in JAVA oder als XERCES-C++. 5) Ausgabe einer XML-Datei kann mit perfektem Zeichensatz mit einem SERIALIZER des Parsers erfolgen. Es geht auch mit der Funktion printf(). Hier solltest du Die Ausgabe der Elemente mit Unterfunktionen hierarchisch schachteln. Die Unterfunktionen sollten die Namen der XML-Elemente tragen. Am besten du rückst die Elemente sauber mit 2 bis drei Leerzeichen pro Schachtelungsebene ein. 6) Ein XML-Tag kann man mit REGEXP oder auch einem abstrakten Automat parsen, da es nicht geschachtelt ist. Um die Schachtelung der Elemente zu prüfen, ist ein abstrakter Kellerautomat notwendig, der also selbst RAM alloziert (für den Keller). So könnte ein µC eine kleine XML-Datei parsen. 7) XSLT ist eine andere Technik, die eine XML-Datei mit Such-und Ausgabefunktionalität umwandelt, ohne ein Zwischenergebnis zu speichern. Sie ist in Firefox- und IE-Browser eingebaut. Es ist mit XSLT nur möglich, Konstanten an einer Stelle der Datei anzulegen, man kann sie nicht ändern. Deshalb brauchst du für Zählvorgänge eine rekursive Programmierung. Dieses Konzept wird für den PC angewendet, nicht bei µC, weil es dynamisch Speicher holt. Das Konzept des XPATH realisiert die Suchfunktionalität in XSLT, es ist im übertragenem Sinne das SELECT-Statement von SQL. 8) XML enthält Textknoten. Eine beliebige Anzahl von Tabulatoren, Zeilentrennern und Leerzeichen zwischen zwei Wörtern des Textes gilt als genau ein Leerzeichen. XML legt nicht eindeutig fest, ob ein Leerzeichen vor dem ersten Wort oder nach dem letzten Wort des Textknotens auch als Leerzeichen gilt. Auch Leerzeichen ohne Text zwischen zwei Knoten sind nicht klar definiert. Der Grund ist, dass man durch Einfügen beliebigen Leer-Raumes die XML-Datei formatieren kann, und dass diese Formatierung sich auf das Ergebnis des Parse-Vorganges nicht auswirken darf.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.