2011-01-24 69 views
2

我需要用java管理xml。只有DOM才足夠... 我需要一些非常簡單或更好的東西我真的會避免安裝新的庫...Java中的XML解析和DOM管理

什麼是在Java 6中使用的包?

我看了文檔,但沒有明確的規定,只是對XML的引用在組織,但沒有很好的提供了...或者我沒有找到它:(

謝謝

+0

你可以寫一個簡單的助手類來完成你的任務。看到這個http://stackoverflow.com/a/8346867/851432 – Jomoos 2011-12-01 19:15:39

回答

1

這是一個例子。一個完整的教程可以發現here

public class ChessboardDOMPrinter { 
private DocumentBuilder builder; 

public void print(String fileName, PrintStream out) 
    throws SAXException, IOException { 
    Document document = builder.parse(fileName); 
    NodeList nodes_i 
    = document.getDocumentElement().getChildNodes(); 
    for (int i = 0; i < nodes_i.getLength(); i++) { 
    Node node_i = nodes_i.item(i); 
    if (node_i.getNodeType() == Node.ELEMENT_NODE 
     && ((Element) node_i).getTagName() 
      .equals("CHESSBOARD")) { 
    Element chessboard = (Element) node_i; 
    NodeList nodes_j = chessboard.getChildNodes(); 
    for (int j = 0; j < nodes_j.getLength(); j++) { 
    Node node_j = nodes_j.item(j); 
    if (node_j.getNodeType() == Node.ELEMENT_NODE) { 
     Element pieces = (Element) node_j; 
     NodeList nodes_k = pieces.getChildNodes(); 
     for (int k = 0; k < nodes_k.getLength(); k++) { 
     Node node_k = nodes_k.item(k); 
     if (node_k.getNodeType() == Node.ELEMENT_NODE) { 
     Element piece = (Element) node_k; 
     Element position 
      = (Element) piece.getChildNodes().item(0); 
     out.println((pieces.getTagName() 
         .equals("WHITEPIECES") 
        ? "White " : "Black ") 
        + piece.getTagName().toLowerCase() 
        + ": " 
        + position.getAttribute("COLUMN") 
        + position.getAttribute("ROW")); 
     } 
     } 
    } 
    } 
    } 
    } 
    return; 
} 
} 
+1

只是沒有註釋的代碼,幾乎沒有一個鏈接不會幫助任何人... – 2011-01-24 18:14:41

2

的DOM API是org.w3c.dom。要開始,你需要使用一個javax.xml.parsers.DocumentBuilder,這可以從javax.xml.parsers.DocumentBuilderFactory可以得到。

這一切都被默認附帶的Java 6,包含在Java 6中

3

XML DOM解析器他re是如何使用它的片段:

import javax.xml.parsers.*; 
import org.w3c.dom.*; 
import org.xml.sax.*; 

.... 

final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
final DocumentBuilder builder = factory.newDocumentBuilder(); 
final Document doc = docbuilder.parse(new InputSource(reader)) 
0

使用JAXB和解析XML綁定到一個數據對象。處理數據對象很容易。 JAXB默認與java 6捆綁在一起。

E.g.

JAXBContext jc = JAXBContext.newInstance("test.schema"); 
Unmarshaller unmarshaller = jc.createUnmarshaller(); 

注 - 如果您的XML格式是固定的,那麼這是個不錯的選擇。