29. november 2003 - 18:43
Der er
7 kommentarer og 1 løsning
At ændre node value via java
Hvordan kan jeg ændre en node_værdi i en eksisterende XML. jeg parser med dom.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
29. november 2003 - 18:47
#1
Finde noden og kalder setNodeValue på den. Har du brug for et eksempel ?
29. november 2003 - 18:48
#2
(du skal selvfølgelig også skrive dit DOM træ ud til fil men det antager jeg at du har fod på)
29. november 2003 - 18:51
#3
Ja tak, en eksempel.
29. november 2003 - 18:53
#4
Jeg har prøvet at finde noden og kalder setNodeValue på den. virker ikke. meget gerne se et eksampel.
29. november 2003 - 18:57
#5
Kode: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import org.apache.xml.serialize.XMLSerializer; public class DomTest6 { private final static String XML_FILE = "C:\\domtest.xml"; public static void main(String[] args) { writeXml(XML_FILE); readXml(XML_FILE); } private static void writeXml(String filename) { try { PrintWriter pw = new PrintWriter(new FileOutputStream(filename)); pw.println("<?xml version='1.0' standalone='yes'?>"); pw.println("<list>"); pw.println("<elm>"); pw.println("<key>1</key>"); pw.println("<val>a</val>"); pw.println("</elm>"); pw.println("<elm>"); pw.println("<key>2</key>"); pw.println("<val>bb</val>"); pw.println("</elm>"); pw.println("<elm>"); pw.println("<key>3</key>"); pw.println("<val>ccc</val>"); pw.println("</elm>"); pw.println("</list>"); pw.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } private static void readXml(String filename) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File(filename)); NodeList elements = doc.getElementsByTagName("elm"); for (int i = 0; i < elements.getLength(); i++) { Node element = elements.item(i); NodeList subelements = element.getChildNodes(); for(int j = 0; j < subelements.getLength(); j++) { String tag = subelements.item(j).getNodeName(); if(tag.equals("val")) { if(subelements.item(j).getFirstChild().getNodeValue().equals("ccc")) { subelements.item(j).getFirstChild().setNodeValue("notccc"); } } } } XMLSerializer ser = new XMLSerializer(System.out, null); ser.serialize(doc.getDocumentElement()); } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return; } }
29. november 2003 - 18:58
#6
Output: <?xml version="1.0"?> <list> <elm> <key>1</key> <val>a</val> </elm> <elm> <key>2</key> <val>bb</val> </elm> <elm> <key>3</key> <val>notccc</val> </elm> </list>
29. november 2003 - 18:58
#7
Der står notccc i.s.f. de oprindelige ccc.
29. november 2003 - 19:02
#8
Mange tak jeg prøver det. og her er 60 point
Kurser inden for grundlæggende programmering