我有一些已经生成的 xml,导致问题的应用程序现在需要向其中添加元素,这些元素需要位于特定位置才能对应用的模式有效...
现在有两个问题,第一个问题是我必须对位置进行硬编码,这不是很好,但是“可以”。 但更大的是 jdom...我打印了内容列表,它看起来像:
element1
text
element2
element4
text
element5
虽然文本节点只是空格,并且我添加的每个元素都使得更难以预测有多少文本节点(因为有时添加了一些有时没有),它们只是被视为元素,但我想忽略它们,因为当我在索引 2 处添加了 element3,它不在 element2 和 element4 之间,它位于这个烦人的文本节点之后。
有什么建议吗?恕我直言,最好的解决方案是自动将其放置在必须根据架构的位置,但我认为这是不可能的?
谢谢你的建议:)
最佳答案
XML 的 JDOM 模型非常字面化……它必须如此。另一方面,JDOM 提供了过滤和处理 XML 的方法,这将使您的任务变得更容易。
在您的情况下,您想要将元素内容添加到文档中,并且所有文本内容都是空白......因此,只需忽略所有文本内容,只关心元素内容。
例如,如果您想在第三个元素之前插入一个新元素 nemt,您可以:
rootemt.getChildren().add(3, new Element("nemt"));
元素现在已排序....文本怎么样...
一个非常简单的解决方案就是漂亮地打印输出:
XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
xout.output(System.out, mydoc);
这样所有的空白都会被重新格式化以使 XML 变得“漂亮”。
编辑 - 不,JDOM 无法根据模式自动将元素插入到正确的位置....
罗尔夫
关于java - Jdoms 烦人的文本节点和 addContent(index, Element) - 模式解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934930/