Я анализирую XML-файл, чтобы изменить возможно все значения и сохранить. Но после сохранения изменений нет. Что я делаю неправильно или что я могу сделать лучше?Отредактированный XML-контент не изменяется после сохранения в файл
Моя цель - проанализировать все содержимое в файле XML, проверить все строки, содержащие специальные символы, и заменить их на escape-символы. Пожалуйста, не спрашивайте, почему парсер, получающий XML-документ, не относится к этим символам, поэтому мне не остается выбора, кроме как избежать их.
String xmlfile = FileUtils.readFileToString(new File(filepath));
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new InputSource(new StringReader(xmlfile)));
NodeList nodeList = doc.getElementsByTagName("*");
for (int i = 0; i < nodeList.getLength(); i++)
{
Node currentNode = nodeList.item(i);
if (currentNode.getNodeType() == Node.ELEMENT_NODE)
{
if (currentNode.getFirstChild()==null)
{}
else {currentNode.setNodeValue(StringEscapeUtils.escapeXml(currentNode.getFirstChild().getNodeValue())); }
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
FileOutputStream fop = null;
File file;
file = File.createTempFile("escapedXML"+UUID.randomUUID(), ".xml");
fop = new FileOutputStream(file);
String xmlString = writer.toString();
byte[] contentInBytes = xmlString.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
Спасибо за ваш надежный подход, воспользуетесь им. Как я смогу сделать, чтобы эти изменения отражались на объекте doc? – Undisputed007
Используйте мой пример кода :) –
child.setTextContent дает ошибку, потому что setTextContent не является методом узла :( – Undisputed007