XML End-Tag anders als Start-Tag

Hallo Community,

ich bin seit Tagen schon auf der Suche nach der Möglichkeit ein anderes End-Tag als das Start-Tag zu benutzen.

Problem ist folgendes, ich versuche eine Android String Resource zu erstellen, diese sieht von der Syntax folgendermaßen aus:

<string name="hello2">Hello Welt!</string>

wie man sehen kann gibt es in den Start-Tag noch einen Zusatz.

Nur hab ich keine Idee wie man das Verwirklichen kann.

Für die Erstellung benutze ich die Javax Lib, nur da ist es so das man dort ein Start-Tag angibt mit den Parameter für das Tag es aber keine Methode gibt um das End-Tag nochmals zu beeinflussen, lediglich eine End-Tag Methode ohne Parameter.

Hat jemand eine Idee?

Gruß
Mad

Das Start-Tag ist doch mit den End-Tag identisch!? “name” ist lediglich ein Attribut, was für XML (reden wir von XML?) völlig normal ist.

Ich würde dir DOM oder SAX als XML-Parser empfehlen. Die erkennen auch Attribute und lösen die richtig auf (bzw. bei DOM kann man das sogar selbst machen).

Hi,

ich verstehe nicht, was du machen möchtest.

Aber korrekt ist, das starttag auch attribute beinhaltet. Dennoch heißt das starttag nur „string“. Und damit matcht es dem endtag, dass niemals attribute hat.

Wieso soll man das endtag beeinflussen wollen und wo genau liegt hier das Problem?

Gruß,

Martin

Hallo Madlip,

du solltest dich mal über den Aufbau von XML informieren.
Das was du machen willst, geht (meines Wissens) nicht mit XML.
Wenn der Start-Tag anders heißt als der End-Tag, woher will man dann wissen, daß die beiden zusammengehören?

MfG
hansmueller

Wie meine Vorredner schon sagten, wäre ein anderes End Tag nicht mehr XML konform und könnte von keinem mir bekannten parser mehr eingelesen werden. Nutze Attribute oder Child nodes zum abbilden der Daten. Auf W3C schools gibts da tolle Tutorials http://www.w3schools.com/xml/

Ich denke hier liegt nur ein falsches Verständnis was ein Tag ist vor. Android Resourcen sind XML konform und im geposten Bsp sind -wie bereits mehrfach erwähnt - Start und End Tag passend.

Dann mal zu schnellen Klarstellung:

<tagname attribut1=“value1 attribut2**=“value2”** …****>taginhalt</tagname>

Wie du siehst ist sind in einem Beispiel Start- und End-Tag identisch. Nur hat das Start-Tag eben noch Attribute.

Hallo,

entschuldigt für die späte Antwort. Ich hatte mich da falsch ausgedrückt, ihr habt recht das es ein Attribut ist. Hatte eben beim verfassen nicht mehr daran gedacht weil Javax das nicht anbietet (zumindest hab ich es nicht gefunden)

Mache das ganze jetzt mit Sax (http://www.informit.com/library/content.aspx?b=STY_XML_21days&seqNum=221) wäre nett wenn ihr mir feedback geben könntet ob du in den Link dargestellte Lösung ok ist. Hab jetzt den String Array durch ein StringBuffer ausgetauscht. Aber hab das Gefühl das dies auch nicht das goldene vom Ei ist.

Mir ist leider nicht klar, was dein Problem ist.

Denke auch, dass es interessant wäre zu wissen um was es genau geht, um Lösungsmöglichkeiten vorzuschlagen bzw. deren Eignung zu bewerten.
Das geht schon los mit der Empfehlung ob SAX, StaX, DOM oder eine andere API für Deinen Fall am besten geeignet wird.
Die im Link gepostete Lösung scheint schon ein paar Jahre auf dem Buckel zu haben. Ich würde sie schon allein deswegen nicht empfehlen, da hier Tags/Elemente mit Strings selbst zusammengebastelt werden.

Am besten zeigst du mal deinen Code mit dem du grade arbeitest, das macht Hilfstestellungen viel einfacher

bis jetzt hab ich an Code das was ich in den Link gepostet ist.

Hintergrund: Mein Ziel ist es so eine Syntax zu generieren->

<string name="hello2">Hello Welt!</string>

Dazu hab ich eine Liste in der ID (hello2), Flag (string) und Value (Hello Welt!) drin gespeichert sind, diese Liste will ich auslesen und wie oben gepostete Syntax erstellen.

Aber da ist doch der end tag gar nicht anders als der start tag?!

Ja, das haben wir mittleile auch heraus gefunden, das war anfangs ein falsches Verständnis meinerseits.

Dann versteht ich nicht wo das Problem ist? Das geht doch mit jeder xml api ganz simpel. Nen Tag “String” anlegen mit nem Attribut “name” und Wert “Hello2” und dem Content “Hello Welt!” ?!

Würde hier einfach DOM nutzen. Entweder org.w3c.dom aus der J2SE oder org.jdom2 als externe Lib.
Für das was Du vorhast ist der verlinkte Code zu viel, zu aufwändig und zu fehleranfällig.

dann nenn mir diesen Befehl bitte in javax. Wäre dir mehr als dankbar!

Hatte ja schon Packages genannt.
org.w3c.dom.Document und org.w3c.dom.Element sind Umfang der Standard Java API.
Mittels javax.xml.parsers.DocumentBuilder und javax.xml.parsers.DocumentBuilderFactory kann man entsprechende XML Knoten erstellen.

DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element root = doc.createElement("resources");
doc.appendChild(root);```
Erstellt schon mal den Rootknoten für Deine string.xml

[QUOTE=_Michael;62983]Hatte ja schon Packages genannt.
org.w3c.dom.Document und org.w3c.dom.Element sind Umfang der Standard Java API.
Mittels javax.xml.parsers.DocumentBuilder und javax.xml.parsers.DocumentBuilderFactory kann man entsprechende XML Knoten erstellen.

DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element root = doc.createElement("resources");
doc.appendChild(root);```
Erstellt schon mal den Rootknoten für Deine string.xml[/QUOTE]

Nenn...

ich hab ein XMLStreamWriter Objekt, damit kann ich kein Attribut setzen.

Werde mir aber mal Dom anschauen.