[英]XML parsing and DOM management in Java
我需要使用Java管理xml。 僅DOM就足夠了。我需要一些非常簡單或更好的東西,否則我將避免安裝新的庫。
在Java 6中使用什么包?
我查看了doc,但沒有提供任何清晰的信息,只是在org中對xml的引用,但沒有提供任何好的信息...或者我沒有找到它:
謝謝
XML DOM解析器包含在Java 6中。以下是有關如何使用它的代碼段:
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 ) )
DOM API在org.w3c.dom
。 首先,您需要使用javax.xml.parsers.DocumentBuilder
,可以從javax.xml.parsers.DocumentBuilderFactory
。
所有這些默認情況下都隨Java 6一起提供。
這是一個例子。 完整的教程可以在這里找到
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;
}
}
使用JAXB並解析XMl綁定到DataObject。 處理一個dataObject很容易。 JAXB默認與Java 6捆綁在一起。
例如
JAXBContext jc = JAXBContext.newInstance("test.schema");
Unmarshaller unmarshaller = jc.createUnmarshaller();
注意-如果您的XML格式是固定的,則是不錯的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.