gpt4 book ai didi

java - 除了如下所示的更改目标之外,我可以保留 xml 格式还是保留原始格式吗?

转载 作者:行者123 更新时间:2023-12-02 01:31:01 26 4
gpt4 key购买 nike

我想在改变一些属性值后保持原来的xml格式。除了更改属性之外,如何保持格式?

我使用的是 java8、apache9、eclipseoxy。

例如,我的示例 XML 是

    <a>
<b id="123"
name="456"
value="789">
<c id="awe"
name="try">
</a>

我使用这样的代码。

    Document doc = getConfigDocument();
NodeList nl = doc.getElementsByTagName("serverInfo");


Element oasisElement = (Element) doc.getElementsByTagName("b").item(0);
oasisElement.setAttribute("id", "1231");

Transformer tr;
try
{
tr = TransformerFactory.newInstance().newTransformer();
tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tr.setOutputProperty(OutputKeys.INDENT, "yes");
tr.transform(new DOMSource(doc), new StreamResult(new File(getConfigRoot())));
resultMsg = "success";
}

这段代码之后,XMl将被重写,并改变格式如下。

<a>
<b id="1231" name="456" value="789">
<c id="awe" name="try">
</a>

除了像下面这样的更改目标之外,我可以保持 xml 格式还是保持原始格式吗?

<a>
<b id="123" name="456" value="789">
<c id="awe"
name="try">
</a>

最佳答案

不,XML 解析器不会向应用程序报告详细布局,因此应用程序(在本例中为 XSLT 处理器)无法保留原始布局。

但是,如果输入格式遵循系统规则,那么您也许能够让序列化程序(处理 XSLT 转换的结果)遵循相同的规则。如果您使用 Saxon 序列化器而不是内置 JDK (Xalan) 序列化器,那么您可以通过指定序列化属性获得非常接近您的输入格式的内容:

indent=yes
saxon:indent-spaces=1
saxon:line-length=10
saxon:attribute-order="id name value"

为此,您需要 Saxon-PE 或更高版本。

关于java - 除了如下所示的更改目标之外,我可以保留 xml 格式还是保留原始格式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56070757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com