TL; DR;當我將xml文件解組到一個對象時,我需要在CDATA中保留新行。在解密java中的xml時保留CDATA中的新行
我有一個XML文件(例如):
<xmlTag>
<![CDATA[<someXml>This content
is formatted</someXml>]]
</xmlTag>
我轉化成名稱空間的目的本與此代碼(過濾器和的SAXSource只是因爲輸入XML沒有命名空間,但生成的類T):
public static <T> T transformFileToObject(File file, Class<T> clazz, XMLFilter filter) throws .. {
JAXBContext jc = JAXBContext.newInstance(clazz);
XMLReader reader = XMLReaderFactory.createXMLReader();
if (filter != null) {
filter.setParent(reader);
}
InputSource is = new InputSource(new FileInputStream(input));
SAXSource source = new SAXSource(filter, is);
Unmarshaller unmarshaller = jc.createUnmarshaller();
return (T) unmarshaller.unmarshal(source);
}
我的問題是,當我調用此,我的XML分析就好了。我得到一個可能看起來像這樣的對象:
class XmlTag {
private String someXml = "This content is formatted";
}
其中存在問題。該字符串未格式化。我已經看到這從編組的角度討論了很多,但我沒有看到任何關於這種方式。
我試過設置編碼來保持換行符,但它似乎不工作。
我在想,我可以製作一個黑客技術,將換行符從\ r \ n換成SOME_RESERVED_STRING,並稍後在屬性中交換,但在我的使用案例中,可能會有幾個someXml實例,這意味着我必須做醜陋的字符串操作。
TL; DR;當我將xml文件解組到一個對象時,我需要在CDATA中保留新行。
不是真的,不 - 但我的文件是從第三方下載的,我不想操縱它們(如果我找到解決方案,我會盡管)編輯:我做了一個「read xml as string,然後將其從字符串轉換爲對象「操作,這樣我可以在需要時操縱字符串。用\ n代替\ r \ n,但沒有效果。 –