Синтаксический анализ XML и управление DOM в Java - PullRequest
2 голосов
/ 24 января 2011

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

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

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

Спасибо

Ответы [ 4 ]

3 голосов
/ 24 января 2011

XML DOM parser включен в 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 ) )
2 голосов
/ 24 января 2011

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

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

1 голос
/ 24 января 2011

Это пример.Полный учебник можно найти здесь

 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;
 }
}
0 голосов
/ 07 апреля 2011

Используйте JAXB и анализируйте XMl для привязки к DataObject. обработка dataObject проста. JAXB поставляется в комплекте с java 6 по умолчанию.

например.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...