который работает с преобразованием. Он ограничен, так как позволяет только ссылаться на dtd и потребует некоторой работы, если тип документа может отличаться. В моем случае этого было достаточно, мне нужно было только жестко закодировать xhtml doctype после преобразования.

у Дом с Java стирает Doctype при редактировании XML?

получил этот XML-файл:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE map[ <!ELEMENT map (station*) >
                <!ATTLIST station  id   ID    #REQUIRED> ]>
<favoris>
<station id="5">test1</station>
<station id="6">test1</station>
<station id="8">test1</station>
</favoris> 

моя функция очень проста:

public static void EditStationName(int id, InputStream is, String path, String name) throws ParserConfigurationException, SAXException, IOException, TransformerFactoryConfigurationError, TransformerException{
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom = builder.parse(is);

    Element e = dom. getElementById(String.valueOf(id));
    e.setTextContent(name);
    // Write the DOM document to the file
    Transformer xformer = TransformerFactory.newInstance().newTransformer();
    FileOutputStream fos = new FileOutputStream(path);
    Result result = new StreamResult(fos);  
    Source source = new DOMSource(dom);


        xformer.setOutputProperty(
                OutputKeys.STANDALONE,"yes"     
                );

    xformer.transform(source, result);
}

это работает, но тип документа стирается! и я только что получил весь документ, но без части с доктайпом, что важно для меня, потому что это позволяет мне получать по id! как мы можем сохранить тип документа? почему это стирает? Я пробовал многие решения с помощью outputkeys, например или omImpl.createDocumentType, но ни один из них не работал ...

благодарю вас !

Ответы на вопрос(0)

Ваш ответ на вопрос