Hallo, meine Aufgabe besteht darin, irgendeine Suchmaske, ein Programm oder ähnliches zu erstellen/ zu finden, was Informationen aus einer großen XML Datei herausholt und übersichtlich darstellt. Die XML-Datei stellt dabei quasi ein Wörterbuch dar, es gibt also jede Menge Einträge mit Übersetzungen, Erklärungen und weiteren Informationen. Am Ende soll man in ein Textfeld o.ä. ein Wort eingeben und dann die Übersetzungen und Informationen schön angezeigt bekommen. Habe bisher jede Menge XML Editoren gefunden, die alle eine schöne Baumstruktur zeigen aber das hilft mir nicht wirklich weiter. Kennt jemand einen fertigen Editor oder Programm, was die Aufgabe erfüllt, wo ich also irgendwie auswählen kann, welche Knoten mit Wert angezeigt werden sollen und wo ich vorher noch nach nem bestimmten Eintrag suchen kann? Oder müsste man selbst was programmieren? XML-Bibliotheken gibts ja für ziemlich viele Programmiersprachen frei zugänglich. Welche Sprache würdet ihr empfehlen? Hab bisschen Erfahrung mit C/C++, Java und Perl, Visual Basic krieg ich auch bisschen was hin denk ich. Außerdem bin ich noch auf Xforms gestoßen (http://de.wikipedia.org/wiki/XForms). Damit könnte man sowas auch basteln, denk ich, allerdings ist die Unterstützung in den Browsern noch nich so weit... Was würdet ihr vorschlagen? Bin für sämtliche Hinweise und Ideen offen =)
Ich benutze Real Studio (früher RealBasic), das enthält leistungsfähige Methoden zum Erstellen und Lesen von XML-Strukturen. Wenn du dich mit dem Aufbau von XML-Dateien auskennst (xmlnodes usw.), sollte es kein großes Problem sein, ein Suchprogramm zu schneidern. Real Studio bietet ausserdem noch den Vorteil, dass du auf Knopfdruck lauffähige Programme aus ein und den selben Quelltext für Windows, Mac OS und Linux erhältst.
Nimm einfach C# und benutze das DOM-Interface, damit kannst Du ziemlich bequem in der Datei suchen. gruß Tom
Für das Auffinden von Informationen in XML Dokumenten eignet sich z.B. XPath. Um eine wenig Programmieren wirst du aber vermutlich nicht herumkommen, da die meisten Programme wohl für allgemeines Betrachten von XML Strukturen gedacht sind. Du müßtest dir halt auch überlegen ob du immer das ganze XML im Speicher halten willst/kannst oder ob das unpraktikabel ist. Wenn du für das XML sogar ein XSD hast, kannst du dir sogar unter Java eine Komplette Objektstruktur erzeugen lassen und dann per Hand suchen, oder wie gesagt über XPath suchen lassen...
Danke für die Antworten schonmal. Real Studio sieht ganz interessant aus, ich bräuchte aber irgendne Lösung, die ich nur mit freien Werkzeugen erreichen kann... Mit C# hab ich bisher noch rein garnix gemacht, würd ich erstmal hintenanstellen. Über XPath hab ich schon paar Sachen gelesen, aber das wäre ja nur die Methode, Daten innerhalb der XML Datei zu suchen. Das müsste ich ja dann noch irgendwie verpacken, in z.B. JavaScript oder so, oder? XSD hab ich keins, eine DTD hätte ich aber.
XSLT wär evtl. noch was. Damit aus dem Datenwust-XML-File eine schöne Auswertung in HTML erzeugen. Werte lassen sich per XPath aus dem XML ziehen, Variablen, Schleifen usw. gibts natürlich auch. Zum Ausführen reicht ein Webbrowser. Edit: Für deine dynamische Anwendung leider nicht so der Hit, da bei jeder Abfrage die Seite neu geladen werden würde... Dann lieber Javascript, das grosse File einmalig laden, und darin suchen.
Ja, XSLT hatte ich mir auch schonmal kurz angeguckt aber dann, wie du schon sagst, wegen der dynamischen Anwendung wieder fallen lassen.
So, habe mich jetzt mal einigermaßen in javascript und DOM eingelesen, allerdings bin ich schon bei einfachen Beispielen am verzweifeln... z.B. hier:
1 | <html>
|
2 | <head>
|
3 | <title>Test</title> |
4 | |
5 | </head>
|
6 | <body>
|
7 | <script language="JavaScript" type="text/javascript"> |
8 | if (window.XMLHttpRequest) |
9 | {
|
10 | xhttp=new XMLHttpRequest(); |
11 | document.write('HttpRequest'); |
12 | }
|
13 | else // for IE 5/6 |
14 | {
|
15 | xhttp=new ActiveXObject("Microsoft.XMLHTTP"); |
16 | document.write('ActiveXObject'); |
17 | }
|
18 | xhttp.open("GET","start.xml",false); |
19 | xhttp.send(); |
20 | xmlObject=xhttp.responseXML; |
21 | document.write("<p />XML document loaded into an XML DOM Object."); |
22 | |
23 | d = xmlObject.documentElement; |
24 | if (d) document.write('<p />' + d.nodeName); |
25 | erstesAlbum = xmlObject.getElementsByTagName('ALBUM')[0]; |
26 | if (erstesAlbum) document.write('<p />' + erstesAlbum.nodeName); |
27 | |
28 | </script>
|
29 | </body>
|
30 | </html>
|
Das Beispiel soll die xml Datei start.xml (hab sie auch mal angehängt) laden und darin dann den Namen des root knoten ausgeben, dann nach dem tag "ALBUM" suchen und auch den tag ausgeben. In Chrome klappt das alles einwandfrei, ich sehe, dass das HttpRequest Objekt angelegt wird und auch die beiden Knotennamen werden ausgegeben. Im IE (Version 6) allerdings sehe ich nur, dass ein ActiveX Objekt erzeugt wird. Die Knotennamen werden nicht ausgegeben, d.h. die Variablen d und erstesAlbum werden erst garnicht initialisiert... Ich weiß, der IE6 is schon lange out, nur leider wird der Browser hier in der Firma noch verwendet und die Anwendung sollte darin schon laufen... Woran liegt das? Funktionieren die Methoden mit dem ActiveXObject nicht oder wie?
Eine Anwendung, die in einem Browser läuft würde ich auf keinen Fall freiwillig und nur unter Androhung der Todesstrafe entwickeln. Genau aus den Gründen, die du mitlerweile festgestellt hast. Nichts ist zu irgendetwas kompatibel und die meiste Zeit verscheisst man buchstäblich damit, die Browserunterschiede auszugleichen.
Karl heinz Buchegger schrieb: > Nichts ist > zu irgendetwas kompatibel und die meiste Zeit verscheisst man > buchstäblich damit, die Browserunterschiede auszugleichen. Das stimmt so nicht. Alle bis auf den IE6 sind recht kompatibel. Da gilt die 20/80-Regel... 20% der Zeit zum Entwickeln auf allen anderen Browsern, 80% zum Anpassen an den IE6. Nachdem der IE6 aber inzwischen von MS nicht mehr supportet wird, und somit ein gewaltiges Sicherheitsrisiko darstellt (nicht nur für den Anwender, auch für den Rest des Internets) sollte man alle IE6-Benutzer vorsorglich einsperren. Aber nein, unsere Innenminister jagen lieber imaginäre Terroristen anstatt gegen die echten Verbrecher vorzugehen... Chris Herch schrieb: > Woran liegt das? Funktionieren die Methoden mit dem ActiveXObject nicht > oder wie? Ne, der IE6 mag nur nicht so richtig mit XML warm werden... Würg-Around:
1 | if(IE6) { |
2 | // Leeres *XML*-Document(-Fragment) anlegen, den Response-*Text* der Query in dessen *HTML*-Parser werfen
|
3 | var temp=document.createElement('xml'); |
4 | temp.setAttribute("innerHTML",xhttp.responseText); |
5 | }
|
Dummerweise reicht das noch nicht. Du musst jetzt noch "temp" an das äussere document ("window.document") anhängen, und von dort wieder auslesen....
Chris Herch schrieb: > Woran liegt das? Funktionieren die Methoden mit dem ActiveXObject nicht > oder wie? Möglich... benutz lieber eine Lib wie jQuery welche solche Unterschiede automatisch handhabt. Aber gerade im IE6 würde ich da keine Geschwindigkeitswunder beim bearbeiten von großen (wei groß ist eigentlich Groß?) XML Dateien erwarten...
Läubi .. schrieb: > benutz lieber eine Lib wie jQuery welche solche Unterschiede > automatisch handhabt. lustig, habe mir gerade auch mal jQuery angeguckt und bin dabei auf http://think2loud.com/reading-xml-with-jquery auf ein Beispiel gestoßen. Funzt in Chrome ohne Probleme aber mal wieder nicht im IE6... ^^
@Chris Herch XML ist eine Stufige Text-Datenbank.mit Subklassen.n*.Vector[n][][][]. Exportieren ist einfach. Hier: http://www.youtube.com/user/IntuitiveEngineering#p/u/1/ht1kFbDAwOU Was soll das genau werden??? Beschreibe das mal bitte naeher. Lexikalisches Woerterbuch.???? ##################################################################### Ich habe mit Doxygen via XML ein Source-Code Lexikon für eine Embedded Dokumentation und Sicherheits-Analyse gemacht. Framework: XML -->EXCEL-->ACCESS SQL-+--->VBASIC_V6 @Database--<Grid>--User-SQL. X / \ Gruss Holger.
@Chris Herch @Forum Hallo ! Danke, mit deinem Top(XML)Problem ! XML Datei extrahieren Was ist den für dich bitte komplex??,die Baumstruktur in der Veschachtelungs-tiefe ??? Lösung1; Bild: XML_VB_1.PNG ######################################################################## # @Thema: via Tools von Doxygen und *.XML File u. Visual-Basic V8 & DataSet1 ######################################################################## # Fazit: Also VBasic V8 ist kostenlos, und kann XML Files lesen.u.schreiben. (sogar neue Strukturen dazufügen) super...kan man dan so step by step aufbohren.Wichtig: *.XML @"Validator"ren nicht vergessen. Damit der @Code nicht abdreht...und die Platte vollmüllt..... ######################################################################## # Quellen: http://www.youtube.com/user/PcFr34kZ#p/u/6/5AaT3PY3Asc unktion: WriteXmlSchema(,,,,) Funktion: WriteXmL( steam As System.IO.Stream ... .... (+ 7 Ueberladungen ######################################################################## ### ######################################################################## ### Frage: Was sind denn bitte "7" Ueberladungen ??? /"\ \ / X Viel Erfolg ! / \ Gruss Holger.
Holger schrieb: > Frage: Was sind denn bitte "7" Ueberladungen ??? 7 Mögliche Varianten, der Funktion Parameter zu übergeben.
Danke @c# mensch Der Parameter kann damit auch wiederum ein anderes "Daten.Bank-Object sein" ??? •Front-end design 1.ter.Entwurf. ########################################################### Quellen: http://www.xmlvalidation.com/documentation.0.html http://www.intuitive.uk.com/process_automation.php Ich glaube ich habe dadurch eine Idee bekommen. Ich habe hier durch das Forum viel neues gelernt. .......unten auf der Page steht noch .......information on Reverse Engineering klick (@@@@Drööömel). / \ Gruss Holger.
Holger schrieb: > Der Parameter kann damit auch wiederum ein anderes "Daten.Bank-Object > sein" ??? Jup, zB. Aber da hilft Dir eigentlich die ASCII Art ... ähhhh Intelli Sens vom zB. VS. ;-)).
Chris Herch schrieb: > Läubi .. schrieb: >> benutz lieber eine Lib wie jQuery welche solche Unterschiede >> automatisch handhabt. > > lustig, habe mir gerade auch mal jQuery angeguckt und bin dabei auf > http://think2loud.com/reading-xml-with-jquery auf ein Beispiel gestoßen. > > Funzt in Chrome ohne Probleme aber mal wieder nicht im IE6... ^^ Ich zitier mich einfach mal selber, hab rausgefunden, dass das mit jQuery nur dann nicht funktioniert, wenn ich ne Datei lokal im IE öffne (file:/...). Lad ich die Datei ins Web hoch funzt das ganze. Noch ne andere Sache zu jQuery, kann ich damit xml Dateien auch schreibend bearbeiten? Konnte bisher noch nichts zu dem Thema finden...
Direkt nicht, du kannst natürlich dem Webserver eine Funktion verpassen welche es dir erlaubt XMl Daten hinzusenden und dieser speichert sie dann.
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.