java - Jdoms 烦人的文本节点和 addContent(index, Element) - 模式解决方案?

标签 java jdom

我有一些已经生成的 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/

相关文章:

Java-使用回调接口(interface)有何优势?

java - 程序如何将mysql中的参数返回给java

java - 错误 XPATH KML JDOM

java - JDOM 从根中删除元素

java - 如何将 JDom 文档的内容放入 File 对象中?

java - 从远程 REST API 测试用例调用回滚数据库更改

java - 如何使用 JUnit 和 Mockito 来模拟内部逻辑

java - 通过Java中的for-each循环检测第一次迭代

java - JDOM:将内容转换为文档

java - 如何使用 Jdom 获取特定标签值