neue Knoten erstellen ?

Status
Nicht offen für weitere Antworten.
M

Manuela

Gast
Hallo
wie kann ich neue Knoten erstellen ???
Code:
    public void werte_aufnehmen(String FILE,String[] elementName,String[] content ){
    try { 
        SAXBuilder builder = new SAXBuilder();
        Document doc = new Document();
        Element rootElement = new Element("root");
        doc.setRootElement(rootElement);
 
       // Hier irgendwas muß wohl gemacht werden aber was ???????

   for (int i = 0; i < elementName.length || i <   content.length; i++) {      
                             Element element = new Element(elementName[i]);
                              element.addContent( content[i]);                          
                              rootElement.addContent(element);       
                   }                                        
             
        	      XMLOutputter out = new XMLOutputter();
		      FileOutputStream fout = new FileOutputStream(FILE);
		      out.output(doc, fout);

    
    } catch (Exception e) {
	  System.out.println(e);
   }
 }

Dies ist meine erstellte XML Datei
Code:
<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
    <a_1>3</a_1>
    <b_1>3</b_1>
    <c_1>11</c_1>
    <d_1>20</d_1>
    <e_1>30</e_1>
    <f_1>40</f_1>  
</root>

jetzt will ich aber das die ganze XML noch einen Zusätzlichen Knoten bekommt, das die XML Datei so ausieht.

Code:
<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
    <Einstellung>
        <a_1>3</a_1>
        <b_1>3</b_1>
        <c_1>11</c_1>
        <d_1>20</d_1>
        <e_1>30</e_1>
        <f_1>40</f_1>  
    </Einstellung>
    <Verhalten>
        <a_22>34</a_22>
     ...
</root >


Danke Manuela
 

pik0r

Mitglied
dazu hätte ich auch interesse=)

meine xml soll so aussehen:
Code:
<test>
        <name>...</name>
        <config>
                    <version>1.0</version>
        </config>
        <plugins>
                <plugin>
                        <id>1</id>
                        <url>www.helftmir.de</url>
                </plugin>
        </plugins>
</test>

danke
 

mikachu

Top Contributor
wenn gewähleistet ist, dass immer genausoviele elementNames und contents in ein sub-element reinkommen, könnte man folgendes mal testen

Code:
public void werte_aufnehmen(String FILE,String[] elementName,String[] content )
{
    try
    { 
        SAXBuilder builder = new SAXBuilder(); 
        Document doc = new Document(); 
        Element rootElement = new Element("root"); 
        doc.setRootElement(rootElement); 

        // Hier irgendwas muß wohl gemacht werden aber was ??????? 

        Element sub;
        for (int i = 0; i < elementName.length || i <   content.length; i++)
        {
             if( i % 6 == 0 ) // bezieht sich nur auf dein beispiel mit 6 elementen in einer sub-kategorie
             {
                 sub = new Element( "sub" );
             }
             Element element = new Element(elementName[i]); 
             element.addContent( content[i]);                          
             sub.addContent(element);
             if( i % 6 == 5 )
             {
                 rootElement.addContent( sub );
             }
        }
        XMLOutputter out = new XMLOutputter(); 
        FileOutputStream fout = new FileOutputStream(FILE); 
        out.output(doc, fout); 
    }
    catch (Exception e)
   { 
     System.out.println(e); 
   } 
}


#not tested#

#edit 1:
mögliches ergebnis:
Code:
<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
    <sub> 
        <a_1>3</a_1> 
        <b_1>3</b_1> 
        <c_1>11</c_1> 
        <d_1>20</d_1> 
        <e_1>30</e_1> 
        <f_1>40</f_1>  
    </sub> 
    <sub> 
        <a_22>34</a_22> 
     ... 
</root >
 
M

Manuela

Gast
Hallo,
das proble ist das es verschiedene Anzahlen von werten gibt
dann geht das mit deinem Beispiel nicht.

Danke
 

mikachu

Top Contributor
dann musst du irgendwie ermitteln, wann denn ein neues sub-element erstellt werden soll...


#edit 1: aber die beiden string-arrays, die du übergibst, sind gleichgroß ?!?

#edit 2: oder kriegt man anhand der element-namens-nummerierung heraus, dass es sich um eine andere gruppe handelt ??? weil dann wär es noch einfacher ;)

Code:
Element sub = new Element( "sub" );
String oldElName = "_"; 
for (int i = 0; i < elementName.length || i <   content.length; i++) 
{
    String elName = elementName[i];
    Element element = new Element(elName); 
    element.addContent( content[i]);                          
    sub.addContent(element); 

    if( !elName.split( "_" )[1].equals(oldElName.split( "_" )[1] ) && i > 0 )
    { 
        rootElement.addContent( sub );
        sub = new Element( "sub" );
    } 

    oldElName = elName;
}

#edit 3:
also ist die anzahl der elementnamen nicht gleich der anzahl der werte ?!?
 

pik0r

Mitglied
hallo,

habe da ein andere hoffe "simple" Frage ;)

also ich hab folgenden Baum:

Code:
<root>
    <test>
        <version>1.0.0</version>
    </test>
</root>

jetzt möchte ich das immer wenn der Node "test" da ist, soll ein node davor kommen "testbegin"

also so:

Code:
<root>
    <testbegin>
    <test>
        <version>1.0.0</version>
    </test>
    </testbegin>
</root>

über eure hilfe wäre ich echt dankbar !!
 

Faruun

Aktives Mitglied
So?

Code:
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

public class ElementHinzu {

private static void newChild(String newElementName) throws JDOMException, IOException{
		
		SAXBuilder builder = new SAXBuilder();
		Document doc = builder.build("c:/test/element.xml");
		Element root = doc.getRootElement();
	
		// neues Element hinzu
		
		Element newElement = new Element(newElementName);
		Element save = (Element) root.getChild("test").clone();
		root.removeContent();
		root.addContent(newElement);
		newElement.setContent(save);
		
		System.out.println(doc);
		
		FileWriter ausgabestrom = new FileWriter("c:/test/new_test.xml");
        XMLOutputter out = new XMLOutputter();
        out.output(doc, ausgabestrom);

	}
	
	public static void main(String[] args) throws JDOMException, IOException {
		newChild("testbegin");
	}
	
}

Gruß,
Faruun
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Kann man neue Knoten löschen? XML & JSON 4
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
N neue XML-Datei erstellen mit vorhandener Struktur XML & JSON 18
T [JDOM] XML File, neue Daten hinzufügen XML & JSON 5
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
B XML und do while Schleife, Knoten falsch XML & JSON 5
K XML Tabs als Knoten gezählt XML & JSON 3
sylo Knoten mittels selbstgebasteltem TreePath öffnen XML & JSON 2
B im DOM anzahl der Knoten in tiefe 3 zählen XML & JSON 2
E XML Knoten mit rekursiver Methode auslesen XML & JSON 3
console xml knoten mit attribut löschen XML & JSON 3
D Anzahl der Knoten in einer XML XML & JSON 6
L SAXReader , auslesen bis zum bestimmten knoten! XML & JSON 3
C suche bestimmten Knoten mit bestimmten attribut XML & JSON 8
R Knoten einfügen und sofort CDATA-Sektion darunter XML & JSON 7
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
Z DOM: Attribute in Knoten schreiben XML & JSON 2
Z Erzeugung einer Referenz von Knoten in JTree auf DOMTree XML & JSON 3
S Jackson: Erstellen Sie Klassen für Jackson aus XSD XML & JSON 2
T Tags in XML Datei mit Java erstellen XML & JSON 3
W Openapi Beschreibung erstellen XML & JSON 3
Z json inkl. Array/Verschachtelung erstellen XML & JSON 2
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
L Soapnachricht aus String erstellen XML & JSON 0
U jar Datei mit ant erstellen XML & JSON 1
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
D XML-Datei per Button erstellen XML & JSON 3
P Eclipse - Ant Skript - jar erstellen mit Referenced Libraries - build.xml XML & JSON 5
S XML file lässt sich in Eclipse nicht erstellen XML & JSON 2
P (Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF XML & JSON 12
B Doctype erstellen XML & JSON 2
B XML file erstellen und in lesbarer form speichern XML & JSON 2
I Tablle mit xsl erstellen XML & JSON 2
D XML Liste erstellen XML & JSON 9
S Konforme XML Datei über XSD erstellen XML & JSON 2
D XSD Datei erstellen XML & JSON 4
B XML auf Basis einer DTD erstellen XML & JSON 2
hdi Probleme beim Erstellen einer XML XML & JSON 7
F Standard für das erstellen von XML? XML & JSON 4
K DTD aus XML erstellen XML & JSON 2
ARadauer Aus XML Datei Objekte erstellen... XML & JSON 3
H XML String erstellen XML & JSON 4
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
M xml - datei erstellen XML & JSON 2
T Java Klasse für gegebenes XML erstellen XML & JSON 4
S Probleme beim erstellen einer Jar XML & JSON 12
G MS-Word Dokument mit Java erstellen XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
M XSL-FO PDF erstellen XML & JSON 15
G Aus CLOB ein XML erstellen XML & JSON 2
D JTree aus XML Datei erstellen & JTree wieder in XML spei XML & JSON 4
C XML per XSD erstellen XML & JSON 2
P Aus einem Node ein Document erstellen XML & JSON 2
D XML-file mit Eclipse erstellen + Namespaces XML & JSON 2
K XML erstellen, verändern usw. XML & JSON 15
M Elemente mit Prefix via JDOM erstellen XML & JSON 6
P Problem beim erstellen eines neuen Elements (JDOM) XML & JSON 5
H XML-Datei mit SQL-Syntax erstellen und verwalten XML & JSON 4
S Problem beim Erstellen eines pdfs XML & JSON 3
T Newbie Frage.aus Java eine XML Datei erstellen? XML & JSON 7
P HTML mit JDOM erstellen und in JEditorPane zeigen XML & JSON 4
J DTD aus xml Datei erstellen XML & JSON 4
R XML Dokumente erstellen XML & JSON 1

Ähnliche Java Themen

Neue Themen


Oben