Announcement

Collapse
No announcement yet.

einzelne XML Elemente editieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • einzelne XML Elemente editieren

    hallo,
    ich suche eine loesung um in einem größeren xml element einen einzelnen element content zu veraendern / ueberschreiben
    zur zeit sieht das bei mir so aus:
    hier soll neu geschrieben werden:
    Code:
    //helpers.java
    public static void deleteEntry(String currentIndex){
            XmlData dummy = new XmlData();
            for (data dummy2 : dummy.myData){
                if (dummy2.getindex().equals(currentIndex)){
                    dummy2.setDeleteFlag("1");
                }
            }
            try {
                TransformerFactory.newInstance().newTransformer().transform(new DOMSource(XmlData.dom) , new StreamResult(new FileOutputStream("save.xml")));
            }
            catch (TransformerConfigurationException e) {
                // TODO exceptionhandling
            }
            catch (TransformerException e) {
                // TODO exceptionhandling
            }
            catch (TransformerFactoryConfigurationError e) {
                // TODO exceptionhandling
            }
            catch (IOException e) {
                // TODO exceptionhandling
            }
        }
    die klasse data:
    Code:
    //data.java
    public class data {
    private String index;
        private String DeleteFlag;
        private String LizenzName;
        private String OracleCsi;
    public data(String index, 
                    String DeleteFlag, 
                    String LizenzName, 
                    String OracleCsi)
    {
                    this.index = index;
                    this.DeleteFlag = DeleteFlag;
                    this.LizenzName = LizenzName;
                    this.OracleCsi = OracleCsi; }
    public String getindex(){
            return index;
        }
        public void setindex(String index){
            this.index = index;
        }
        public String getDeleteFlag(){
            return DeleteFlag;
        }
        public void setDeleteFlag(String DeleteFlag){
            this.DeleteFlag = DeleteFlag;
    ....
    }
    und hier kommt mein xml dokument her:
    Code:
    //XmlData.java
    public class XmlData {
        public static Document dom;    
        public List<data> myData = new ArrayList<data>();
        
        public XmlData() {
            myData = new ArrayList<data>();
            parseXmlFile();
            parseDocument();
        }
        
        public void parseXmlFile() {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            try {
             DocumentBuilder db = dbf.newDocumentBuilder();
             dom = db.parse("save.xml");
          }
          catch (ParserConfigurationException pce) {
               pce.printStackTrace();
           } 
            catch (SAXException se) {
                se.printStackTrace();
            } 
            catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
        
        public void parseDocument() {
            Element dataElement = dom.getDocumentElement();
            NodeList nl = dataElement.getElementsByTagName("data");
            if (nl != null && nl.getLength() > 0) {
                for (int i = 0; i < nl.getLength(); i++) {
                    Element el = (Element) nl.item(i);
                    data d = getdata(el);
                    myData.add(d);
                }
            }
        }
        
            private String getTextValue(Element ele, String tagName) {
            String textVal = null;
            NodeList nl = ele.getElementsByTagName(tagName);
            if (nl != null && nl.getLength() > 0) {
                Element el = (Element) nl.item(0);
                textVal = el.getFirstChild().getNodeValue();
            }
    
            return textVal;
        }
            
        public data getdata(Element dataElement) {
           String index = getTextValue(dataElement, "Index");
           String DeleteFlag = getTextValue(dataElement, "DeleteFlag");
           String LizenzName = getTextValue(dataElement, "LizenzName");
           String OracleCsi = getTextValue(dataElement, "OracleCsi");
    ..........
    data d = new data(   index, 
                                DeleteFlag, 
                                LizenzName, 
                                OracleCsi, 
    .........
    
    return d;
        }
    }
    }
    leider klappt es so nicht, mein elementinhalt zu ueberschreiben.
    habe mir auch schon jaxb angeschaut, versteh da aba nur bahnhof
    gibt es eine moeglichkeit, meinen quelltext so zu erweitern, dass gewuenschter effekt ( deleteflag von 0 auf 1 setzen ) realisiert werden kann?

    thx
Working...
X