【问题标题】:How to get the content of an Element (CDATA) while preserving line breaks?如何在保留换行符的同时获取元素(CDATA)的内容?
【发布时间】:2017-04-10 13:20:27
【问题描述】:

我试图获取只有 CDATA 部分的元素的内容。 CDATA 内部是多行文本。

但是,当我尝试 element.getValue() .getText().getTextTrim() 时,它们都会剥离断线。

我需要得到一个保留换行符的字符串。我能做什么?

【问题讨论】:

  • 你能把你的代码和XML的例子放在一起吗?否则很难找出你的错误。
  • 所以你的意思是这些都不应该删除空格?我现在不在电脑前……我只是想也许我调用了错误的方法

标签: jdom-2


【解决方案1】:

这是我根据示例 XML 文件整理的一些代码:

<root>
   <data><![CDATA[This is text
   with some newlines
   in it, and some other spaces.]]></data>
</root>

和代码:

public static void main(String[] args) throws JDOMException, IOException {
    Document doc = new SAXBuilder().build("data/cdata.xml");
    String cdata = doc.getRootElement().getChild("data").getText();
    System.out.println(cdata);
}

产生输出:

This is text
   with some newlines
   in it, and some other spaces.

这意味着它可以正常工作。

【讨论】:

  • 我真的没有运气,你能想到什么可能导致换行符被删除吗?如果我使用Element.getValue().getText(),它们肯定会消失。我什至将字符串保存到文件中进行测试。那里和调试器中都没有换行符。我的源 XML 有许多换行符(CDATA 部分中有整页文本)。它使用 Xml Schema,你认为这有什么不同吗?
  • 哦...我刚刚意识到它是我的 XSD 中的一个令牌.. 可能就是这样.. 顺便说一句 - 相关问题 - JDOM2 是否仍在开发中或至少在维护中?
  • 是的,JDOM 仍然很活跃,每年有 350 万次下载,而且势头强劲。
猜你喜欢
  • 2011-01-05
  • 2010-11-16
  • 1970-01-01
  • 2019-10-03
  • 2018-05-05
  • 2013-12-20
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多