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
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.