<!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 Parser 来解析 XML 文件并使用 Java 中的 Transformer 更新内容。
更新 XML 文件时,DOCTYPE和&product-info; 和&item-info; 被删除。
如何使用 Java 而不是任何第三方库来保留值?