12. december 2004 - 16:59Der er
12 kommentarer og 1 løsning
tilføjelse til xml JDOM
jeg har siddet og kigget lidt på arne_vs XML artikler, men har lidt problemer med at få tingene til at virke.
"Mere XML i Java" og Ændring af JDOM træ.
Jeg har direkte kopieret det eksemepl over, så det burde jo virke. Men jeg får en fejl når jeg prøver:
ChangeJDOM.java
Exception in thread "main" java.lang.Error: Unresolved compilation problems: The method hasChildren() is undefined for the type Element The method setIndent(boolean) is undefined for the type XMLOutputter The method setNewlines(boolean) is undefined for the type XMLOutputter
public class ChangeJDOM { public static void main(String[] args) { try { // læs fra fil til DOM træ DOMAdapter da = new XercesDOMAdapter(); org.w3c.dom.Document w3cdoc = da.getDocument(new FileInputStream("C:\\test.xml"), false); DOMBuilder b = new DOMBuilder(); Document doc = b.build(w3cdoc); // fjern tomme medlemmer List list = doc.getRootElement().getChildren(); for (int i = 0; i < list.size(); i++) { Element elm = (Element) list.get(i); if(!elm.hasChildren()) { elm.getParent().removeContent(elm); } } // tilføj nyt medlem Element navn = new Element("navn"); navn.setText("Lars Larsen"); Element adresse = new Element("adresse"); adresse.setText("Ledvej 14"); Element medlem = new Element("medlem"); medlem.addContent(navn); medlem.addContent(adresse); medlem.setAttribute("no", "4"); doc.getRootElement().addContent(medlem); // udskriv DOM træ XMLOutputter fmt = new XMLOutputter(); fmt.setIndent(true); fmt.setNewlines(true); System.out.println(fmt.outputString(doc)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JDOMException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
public class ChangeJDOM { public static void main(String[] args) { try { // læs fra fil til DOM træ DOMAdapter da = new XercesDOMAdapter(); org.w3c.dom.Document w3cdoc = da.getDocument(new FileInputStream("C:\\test.xml"), false); DOMBuilder b = new DOMBuilder(); Document doc = b.build(w3cdoc); // fjern tomme medlemmer List list = doc.getRootElement().getChildren(); for (int i = 0; i < list.size(); i++) { Element elm = (Element) list.get(i); if(elm.getChildren().size() == 0) { elm.getParent().removeContent(elm); } } // tilføj nyt medlem Element navn = new Element("navn"); navn.setText("Lars Larsen"); Element adresse = new Element("adresse"); adresse.setText("Ledvej 14"); Element medlem = new Element("medlem"); medlem.addContent(navn); medlem.addContent(adresse); medlem.setAttribute("no", "4"); doc.getRootElement().addContent(medlem); // udskriv DOM træ XMLOutputter fmt = new XMLOutputter(Format.getPrettyFormat()); System.out.println(fmt.outputString(doc)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JDOMException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
org.jdom.JDOMException: java.lang.ClassNotFoundException: org.apache.xerces.parsers.DOMParser: org.apache.xerces.parsers.DOMParser at org.jdom.adapters.XercesDOMAdapter.getDocument(XercesDOMAdapter.java:149) at Xmltest.main(Xmltest.java:20) Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.DOMParser at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jdom.adapters.XercesDOMAdapter.getDocument(XercesDOMAdapter.java:96) ... 1 more Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.DOMParser at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jdom.adapters.XercesDOMAdapter.getDocument(XercesDOMAdapter.java:96) at Xmltest.main(Xmltest.java:20) Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.DOMParser at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jdom.adapters.XercesDOMAdapter.getDocument(XercesDOMAdapter.java:96) at Xmltest.main(Xmltest.java:20)
Efter min mening er det ikke pænt af dem at fjerne metoder mellem beta 8 og version 1.0 !
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.