При обновлении файлов XML отсутствует декларация сущности - Java - PullRequest
0 голосов
/ 14 марта 2019
<!DOCTYPE extended-info [
    <!ENTITY product-info SYSTEM "${product.info}">
    <!ENTITY item-info SYSTEM "${item.info}">
]>
<root-element>
    <element>
    </element>
    ....
    &product-info;
    &item-info;
</root-element>

У меня есть XML, подобный приведенному выше.

Я использую приведенный ниже код для анализа XML и обновления атрибутов.

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
docBuilder.setEntityResolver(new EntityResolver(){
    public InputSource resolveEntity (String publicId, String systemId)
    {
        try
        {
            return new InputSource(new StringReader(""));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }
});

Document doc = docBuilder.parse(new java.io.FileInputStream(xml_path));
NodeList attributes = doc.getElementsByTagName("configuration");
for(int i=0;i<attributes.getLength();i++) {
    Element ele = (Element)attributes.item(i);
    String attributeName = ele.getAttribute("name");//No I18N
    if("ElementName".equals(attributeName)) {
        ele.setAttribute("value",newElementValue);
    }
}

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");//No I18N
StreamResult result = new StreamResult(new File(xml_path));
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);

Я использую DOMАнализатор для анализа XML-файла и обновления содержимого с использованием Transformer в Java.

При обновлении файла XML удаляются DOCTYPE и & product-info; и & item-info; .

Как мне сохранить значения, используя Java, а не сторонние библиотеки?

...