Tiens, c'est cadeau :
C'est une classe qui utilise un implémentation de parser pour créer des documents et les convertir en string. Ca vaut ce que ça vaut, mais si quelqu'un envoie des améliorations, je suis preneur
Pour s'en servir, une fois le document crée, tu peux utiliser les commandes sur getRoot ou un autre node que tu auras crée
Les plus importantes :
node.getOwnerDocument.createElement("..." )
node.appendChild(otherNode)
node.setAttribute("name", "value" )
Mais ça et le reste, c'est dans la doc...
Code :
- import org.w3c.dom.Element;
- import org.w3c.dom.*;
- import org.w3c.dom.Node;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.parsers.FactoryConfigurationError;
- import java.io.IOException;
- import org.xml.sax.SAXException;
- public class XmlDocument {
- private org.apache.crimson.tree.XmlDocument doc;
- /**
- * Creates a DOM document from an input string
- * @param content a String that will be parsed to create the document
- */
- public XmlDocument(String content) {
- try {
- DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = fact.newDocumentBuilder();
- java.io.ByteArrayInputStream s = new java.io.ByteArrayInputStream(content.getBytes());
- doc = (org.apache.crimson.tree.XmlDocument) builder.parse(s);
- }
- catch (ParserConfigurationException ex) {
- ex.printStackTrace();
- } catch (FactoryConfigurationError ex) {
- ex.printStackTrace();
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (SAXException ex) {
- ex.printStackTrace();
- }
- }
- /**
- * Creates an empty document
- */
- public XmlDocument() {
- try {
- DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = fact.newDocumentBuilder();
- doc = (org.apache.crimson.tree.XmlDocument) builder.newDocument();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- /**
- * Creates a root node for the document.
- * All further operations on the document (adding, reading, ...) can be done on the root
- * @param name
- */
- public void createRoot(String name)
- {
- Element e = doc.createElement(name);
- doc.appendChild(e);
- }
- /**
- * Writes the document to a string
- * @return
- */
- public String toString() {
- try {
- java.io.StringWriter writer = new java.io.StringWriter();
- doc.write(writer);
- String result = writer.toString();
- return result;
- } catch (Exception ex) {
- ex.printStackTrace();
- return "<exception><description>" + ex.toString() + "</description><message>" + ex.getMessage() +
- "</message></exception>";
- }
- }
- public Element getRootElement() {
- if (doc != null) {
- return doc.getDocumentElement();
- }
- else {
- return null;
- }
- }
- }
|