【发布时间】:2021-04-01 19:10:51
【问题描述】:
我正在通过org.w3c.dom.Document 加载xml 文件(pom.xml)并通过javax.xml.transform.Transformer、javax.xml.transform.TransformerFactory 编辑某些节点的值(基本上是更改某些依赖项的版本值)
&javax.xml.transform.dom.DOMSource.
但问题是,这也会将所有出现的 " 转换为 " 字符,这是我不想要的。请参见下面的示例:
<Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="${project.version}"</Export-Package>
转换为:
<Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="${project.version}"</Export-Package>
请帮助解决这个问题,如何使用当前使用的 API 忽略这些自动转换。
代码示例:
public void writeDocument(File filePath)
{
TransformerFactory transformerFactory = TransformerFactory.newInstance();
this.thisDoc.getDocumentElement().normalize();
Transformer transformer;
try
{
transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(thisDoc);
StreamResult result = new StreamResult(filePath);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
}
catch (TransformerException e)
{
VersionUpdateExceptions.throwException(e, LOG);
}
}
【问题讨论】:
-
为什么会出现这个问题?
-
我们正在开发一些用于版本升级的实用程序,除了版本升级之外,不希望进行任何无关的更改。
-
但这只会发生一次;发生此转换后,所有后续更新都会进行预期的最小更改。
-
你能发布更新的代码吗?
-
添加了代码示例。
标签: java dom java-8 xml-parsing domdocument