2017-04-10 66 views
-1

我试图获取只有CDATA部分的元素的内容。 CDATA里面有多行文字。如何在保留换行符的同时获取元素(CDATA)的内容?

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

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

+0

你可以放在一起你的代码的例子,也许是XML的例子吗?否则,很难弄清楚你的bug。 – rolfl

+0

所以你的意思是这些都不应该删除空白?我不是在此刻的电脑...我只是想,也许我打电话了错误的方法 – ycomp

回答

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. 

这意味着它的工作原理确定。

+0

我实在是没有运气,你能想到的任何可能导致换行符被删除?如果我使用'Element.getValue()'或'.getText()',它们肯定会消失。我甚至将这些字符串保存到要测试的文件中。无论在那里还是在调试器中,都没有换行符。我的源XML有许多换行符(CDATA部分有一整页文本)。它使用Xml架构,你认为这有所作为吗? – ycomp

+0

哦......我刚刚意识到它是我的XSD中的一个令牌..这可能是它..顺便说一句 - 相关的问题 - 是JDOM2仍在开发或至少维护? – ycomp

+0

是的,JDOM仍然活跃,每年下载量达到350万次,持续强劲。 – rolfl