Добавление информации DTD в XML с использованием DOM - PullRequest
2 голосов
/ 28 июня 2011

Я использую DOM для создания XML-файла и использую StAX для анализа другого XML-файла, чтобы выборочно получать данные для записи.

Я застрял в точке, где у меня есть событие DTD от Stax, но я не знаю, как записать его в документ DOM.

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

while (r.hasNext()) {
            int eventType = r.next();

            Node child;

            switch (eventType) {
            case XMLStreamConstants.CDATA:
                child = doc.createCDATASection(r.getText());
                break;
            case XMLStreamConstants.DTD:
            //??? - what shoould come here?
            break;

r - это объект XMLEventReader

1 Ответ

1 голос
/ 29 июня 2011

Наконец нашел ответ.

Doctype добавлен при преобразовании файла.

 Transformer tFormer = 
  TransformerFactory.newInstance().newTransformer();
//  Set system id
  tFormer.setOutputProperty(
  OutputKeys.DOCTYPE_SYSTEM, "systmId");

  Source source = new DOMSource(doc);
  Result result = new StreamResult(System.out);
  tFormer.transform(source, result);
...