Java/XML/xerces

Материал из Java эксперт
Перейти к: навигация, поиск

Adding an Attribute with DOM

   <source lang="java">

import org.w3c.dom.Document; import org.apache.xerces.dom.DOMImplementation; import org.w3c.dom.Element; public class MainClass {

 public static void main(String args[]) {
   Document dom = DOMImplementation.createDocument(null, null, null);
   Element root = dom.createElement("games");
   Element child1 = dom.createElement("game");
   root.appendChild(child1);
   child1.setAttribute("A", "a");
 }

}

</source>
   
  
 
  



Adding an Element with DOM

   <source lang="java">

import org.w3c.dom.Document; import org.apache.xerces.dom.DOMImplementation; import org.w3c.dom.Element; public class MainClass {

 public static void main(String args[]) {
   Document dom = DOMImplementation.createDocument(null, null, null);
   Element root = dom.createElement("games");
   Element child1 = dom.createElement("game");
   root.appendChild(child1);
   dom.appendChild(root);
 }

}

</source>
   
  
 
  



A simple example to show how to use the DOM API

   <source lang="java">

import java.io.*; import org.w3c.dom.Document; import org.w3c.dom.DocumentType; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.apache.xerces.parsers.DOMParser; public class MainClass {

 public void processNode(Node node, String spacer) throws IOException {
   if (node == null)
     return;
   switch (node.getNodeType()) {
   case Node.ELEMENT_NODE:
     String name = node.getNodeName();
     System.out.print(spacer + "<" + name);
     NamedNodeMap nnm = node.getAttributes();
     for (int i = 0; i < nnm.getLength(); i++) {
       Node current = nnm.item(i);
       System.out.print(" " + current.getNodeName() + "= " + current.getNodeValue());
     }
     System.out.print(">");
     NodeList nl = node.getChildNodes();
     if (nl != null) {
       for (int i = 0; i < nl.getLength(); i++) {
         processNode(nl.item(i), "");
       }
     }
     System.out.println(spacer + "</" + name + ">");
     break;
   case Node.TEXT_NODE:
     System.out.print(node.getNodeValue());
     break;
   case Node.CDATA_SECTION_NODE:
     System.out.print("" + node.getNodeValue() + "");
     break;
   case Node.ENTITY_REFERENCE_NODE:
     System.out.print("&" + node.getNodeName() + ";");
     break;
   case Node.ENTITY_NODE:
     System.out.print("<ENTITY: " + node.getNodeName() + "> </" + node.getNodeName() + "/>");
     break;
   case Node.DOCUMENT_NODE:
     NodeList nodes = node.getChildNodes();
     if (nodes != null) {
       for (int i = 0; i < nodes.getLength(); i++) {
         processNode(nodes.item(i), "");
       }
     }
     break;
   case Node.DOCUMENT_TYPE_NODE:
     DocumentType docType = (DocumentType) node;
     System.out.print("<!DOCTYPE " + docType.getName());
     if (docType.getPublicId() != null) {
       System.out.print(" PUBLIC " + docType.getPublicId() + " ");
     } else {
       System.out.print(" SYSTEM ");
     }
     System.out.println(" " + docType.getSystemId() + ">");
     break;
   default:
     break;
   }
 }
 public static void main(String[] args) {
   String uri = "test.xml";
   try {
     bookDescDOM bd = new bookDescDOM();
     System.out.println("Parsing XML File: " + uri + "\n\n");
     DOMParser parser = new DOMParser();
     parser.setFeature("http://xml.org/sax/features/validation", true);
     parser.setFeature("http://xml.org/sax/features/namespaces", false);
     parser.parse(uri);
     Document doc = parser.getDocument();
     bd.processNode(doc, "");
   } catch (Exception e) {
     e.printStackTrace();
     System.out.println("Error: " + e.getMessage());
   }
 }

}

</source>
   
  
 
  



Outputting a DOM with XMLSerializer

   <source lang="java">

import org.w3c.dom.Document; import org.apache.xerces.dom.DOMImplementation; import org.w3c.dom.Element; import org.apache.xml.serialize.XMLSerializer; import java.io.IOException; public class MainClass {

 public static void main(String args[]) throws IOException {
   Document dom = DOMImplementation.createDocument(null, null, null);
   Element root = dom.createElement("A");
   Element child1 = dom.createElement("B");
   child1.appendChild(dom.createTextNode("C"));
   child1.setAttribute("A", "a");
   root.appendChild(child1);
   dom.appendChild(root);
   XMLSerializer serial = new XMLSerializer(System.out, null);
   serial.serialize(dom.getDocumentElement());
 }

}

</source>
   
  
 
  



Parsing XML with SAX

   <source lang="java">

import org.apache.xerces.parsers.SAXParser; import org.xml.sax.InputSource; import java.io.FileInputStream; public class MainClass {

 public static void main(String args[]) throws Exception {
     SAXParser saxParser = new SAXParser();
     saxParser.setContentHandler(new EventHandler());
     saxParser.parse(new InputSource(new FileInputStream("games.xml")));
 }

}

</source>
   
  
 
  



Walking a Document with DOM

   <source lang="java">

import org.apache.xerces.parsers.DOMParser; import org.xml.sax.SAXException; import java.io.IOException; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; public class MainClass {

 public static void main(String args[]) throws IOException, SAXException {
   DOMParser parser = new DOMParser();
   parser.parse("games.xml");
   Document dom = parser.getDocument();
   walkNode(dom.getDocumentElement());
 }
 private static void walkNode(Node theNode) {
   NodeList children = theNode.getChildNodes();
   printNode(theNode);
   for (int i = 0; i < children.getLength(); i++) {
     Node aNode = children.item(i);
     if (aNode.hasChildNodes())
       walkNode(aNode);
     else
       printNode(aNode);
   }
 }
 private static void printNode(Node aNode) {
   System.out.println(aNode.getNodeName() + "," + aNode.getNodeValue());
 }

}

</source>