2011-01-24 4 views
2

Мне нужно управлять xml с помощью java. Достаточно только DOM ... Мне нужно что-то очень простое или лучшее, я бы действительно избегал устанавливать новые библиотеки ...Анализ XML и управление DOM в Java

Какой пакет использовать в Java 6 ??

Я посмотрел в документ, но ничего не ясно, при условии, просто ссылку на XML в орг, но ничего хорошего из этого не предусмотрено ... или я не нашел :(

Спасибо

+0

Вы можете написать простой вспомогательный класс для выполнения своей задачи в DOM. См. Это http://stackoverflow.com/a/8346867/851432 – Jomoos

ответ

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

Просто раскованный код и едва ссылка никому не поможет ... –

+0

Я не могу придумать что-то более полезное, чем хороший пример. Если вы считаете, что код не помогает писать код, то вы можете быть не в том месте;) –

+1

Ну ... правильно, что без комментирования код не очень полезен, но это зависит от случая ...: P в этом case, это помогает мне много gven, что мне нужно только название пакетов и некоторые ссылки, если вы считаете, что я опытный программист (не так много, но немного, да), эти строки полезны :) – Andry

2

В DOM API в org.w3c.dom. для начала вам нужно использовать javax.xml.parsers.DocumentBuilder, которая может быть получена от javax.xml.parsers.DocumentBuilderFactory.

Все это поставляется с Java 6 по умолчанию.

3

XML DOM парсер входит в Java 6 Он 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 для привязки к DataObject. обработка объекта данных очень проста. JAXB поставляется в комплекте с java 6 по умолчанию.

E.g.

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

Примечание. Хороший вариант, если ваш формат XML исправлен.

Смежные вопросы