DOM Baum mit Xerces auseinanderschneiden



  • Hallo,

    ich habe folgendes Problem, und bin für jede Antwort dankbar :
    Ich lese mit Xerces (Java) ein XML Dokument in einen DOM Baum ein,
    und möchte nun Teile des Baumes rausschneiden, und in einem extra
    XML File speichern :

    alt (eine Datei)
    
    <e1>
     <e2>
      <e3/>
      <e4/>
     </e2>
     <e5>
      <e6/>
      <e7/>
     </e5>
    </e1>
    
    neu : 
    Datei 1
    <e2>
      <e3/>
      <e4/>
    </e2>
    
    Datei 2
    <e5>
      <e6/>
      <e7/>
    </e5>
    

    Gibt es eine Klasse in Xerces, der ich einen Teilbaum uebergeben
    kann, und diese schreibt dann eine XML File ?

    THX

    STefan



  • oha DOM

    erstmal vorneweg. Bei Java & XML würde ich mir immer
    überlegen ob ich nicht JDOM nutze da es angenehmer anwendbar ist.

    aber zu DOM:

    import org.w3c.*;
    ...
    private ArrayList splitNodes(Documet doc){
      ArrayList parts = new ArrayList();
      //die Kinder des root element finden 
      NodeList ls = doc.getFirstChild().getChildNodes();
      for(int a=0; a < ls.getLength();a++) {
       Node tmp = ls.item(a);
       if((tmp.getNodeType()==Node.ELEMENT_NODE) // ist ein Element
          &&((tmp.getNodeName()=="e2")
             ||(tmp.getNodeName()=="e5))) {
             // ist einer der gewünschten Elemente ArrayList zuweisen
                                   parts.add(tmp);
        }
      } 
    }
    

    Damit hast du
    die beiden Element in der ArrayList, dann brauchst du die nur noch ausgeben.
    Ich weiss das leider nur grad wie das mit JDOM geht aus dem Kopf.
    Aber mit DOM ist das ziemlich ähnlich. Vielleicht hilfts dir ja doch

    XMLOutputter outputter 
      = new XMLOutputter(" ",true);
    FileStream output
        = new FileOutPutStream("file.xml");
    outputter.output(doc,output);
    

Anmelden zum Antworten