我必须用 Java 修改 XML 文件中的一些属性。输入 XML 的所有属性值都用单引号括起来。
但是在对文档进行了所有更改之后,当我将文档保存到 XML 文件中时,所有属性值都用双引号引起来。
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.output(doc, new FileWriter(path));
有什么办法可以让输出器使用单引号?
谢谢
从技术上讲,是的....但是....单引号和双引号之间在语义上没有什么不同....(来自 JDOM 的结果文档同样有效)....是否有一个非常好的理由需要去做这个?如果有的话,我很想知道,也许将它作为 JDOM 的“本机”特性引入......
但是,您可以通过(仅)一点工作来更改它的格式——大约 15 行代码...... JDOM2 API 理论上使这变得相当容易。您可以使用AbstractXMLOutputProcessor的子类创建自己的XMLOutputProcessor并覆盖printAttribute() 方法...例如(摆脱一些您可能不需要的代码路径(如非转义输出):
private static final XMLOutputProcessor CUSTOMATTRIBUTEQUOTES = new AbstractXMLOutputProcessor() {
@Override
protected void printAttribute(final Writer out, final FormatStack fstack,
final Attribute attribute) throws IOException {
if (!attribute.isSpecified() && fstack.isSpecifiedAttributesOnly()) {
return;
}
write(out, " ");
write(out, attribute.getQualifiedName());
write(out, "=");
write(out, "'"); // Changed from "\""
// JDOM Code used to do this:
// attributeEscapedEntitiesFilter(out, fstack, attribute.getValue());
// Now we instead change to quoting the ' instead of "
String value = Format.escapeAttribute(fstack.getEscapeStrategy(), value);
// undo any " escaping that the Format may have done.
value = value.replaceAll(""", "\"");
// do any ' escaping that needs to be done.
value = value.replaceAll("'", "'");
write(out, value);
write(out, "'"); // Changed from "\""
}
};
现在你有了这个 cusome 输出器,你可以像这样使用它:
XMLOutputter xmlOutput = new XMLOutputter(CUSTOMATTRIBUTEQUOTES);
xmlOutput.output(doc, new FileWriter(path));