在Java中的XML DOM解析器?

问题描述:

任何人都可以在java*享dom解析器的好文档。在Java中的XML DOM解析器?

感谢

+2

你接受一个答案,我会尽快给予好评回来。谢谢。 – 2011-04-10 18:30:46

+0

你可以自己写一个。看到这个http://*.com/a/8346867/851432 – Jomoos 2011-12-01 19:13:20

+0

你可能想考虑OXM而不是传统的DOM解析呢? Java允许您使用Jackson等技术在Java对象和Java对象的XML定义之间进行转换 – Richard 2015-02-16 17:14:41

以下是教程在Java中使用DOM:

  1. xml dom
  2. DOM-Parser
  3. java-xml-dom
  4. dom example

希望这有助于。

检查这个Simple Parser XML with DOM Examplethis Sax Example

public class ReadXMLFile { 

    public static void main(String argv[]) { 

    try { 

    File fXmlFile = new File("/Users/mkyong/staff.xml"); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(fXmlFile); 

    //optional, but recommended 
    //read this - http://*.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work 
    doc.getDocumentElement().normalize(); 

    System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); 

    NodeList nList = doc.getElementsByTagName("staff"); 

    System.out.println("----------------------------"); 

    for (int temp = 0; temp < nList.getLength(); temp++) { 

     Node nNode = nList.item(temp); 

     System.out.println("\nCurrent Element :" + nNode.getNodeName()); 

     if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

      Element eElement = (Element) nNode; 

      System.out.println("Staff id : " + eElement.getAttribute("id")); 
      System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); 
      System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent()); 
      System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent()); 
      System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent()); 

     } 
    } 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    } 

}