我在使用 Transformer/TransformerFactory 更新现有 XML 文件(在 Wowza 服务器上)时遇到了一些麻烦。它工作得很好并且更新正确,但它使多行注释变得一团糟。
评论开始看起来像这样:
<!--StorageDir path variables
${com.wowza.wms.AppHome} - Application home directory
${com.wowza.wms.ConfigHome} - Configuration home directory
${com.wowza.wms.context.VHost} - Virtual host name
${com.wowza.wms.context.VHostConfigHome} - Virtual host config directory
${com.wowza.wms.context.Application} - Application name
${com.wowza.wms.context.ApplicationInstance} - Application instance name
-->
转换后,它们最终都在一行中,其中有回车符曾经所在的方形字符(不会在此处发布结果,因为方形不显示,并且换行使最终结果看起来很像上面的块)。
这是我用来进行 xml 更新的代码(只是一个片段):
TransformerFactory tFactory = TransformerFactory.newInstance();
tFactory.setAttribute("indent-number", new Integer(4));
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document);
File outFile = new File(path.getPath() + "/Application.xml");
FileOutputStream outputStream = new FileOutputStream(outFile);
StreamResult result = new StreamResult(new OutputStreamWriter(outputStream));
transformer.transform(source, result);
我需要保持这些多行注释清晰易读且格式正确,因为这些 xml 文件有时需要手动编辑,并且注释用作指南和提醒。
有输入吗?我怎样才能让变形金刚停止破坏我的评论?非常感谢!:)
编辑: 这是最初创建文档的方式(其中 appXML 是要编辑的 Application.xml 文件的路径):
Document document;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(appXML);
在那之后,我做了很多特定于节点的更改......总共太多了,无法将它们全部放在这里,但是所有更改都遵循以下格式:
更改节点:
Node streamType = document.getElementsByTagName("StreamType").item(0);
streamType.setTextContent(mountType);
附加一个子元素
Node nameNode = document.createElement("Name");
nameNode.appendChild(document.createTextNode("utilities"));
Node module = document.createElement("Module");
module.appendChild(nameNode);
Element modules = (Element)document.getElementsByTagName("Modules").item(0);
modules.appendChild(module);
希望信息有所帮助!