2012-12-06 48 views
3

我有一個簡單的腳本,填充HTML形式從服務器如何使用jQuery獲得使用換行符的XML?

$.ajax({ 
    url: getUrl(), 
    dataType: "xml" 
}).done(function(xml) { 
    //get values from xml file and fill in html form 
}); 

和在服務器側的簡單代碼收到值,當加入的textarea字段生成XML

public void writeXmlValues() throws Exception { 
    final HttpServletResponse response = context.getHttpResponse(); 
    response.setContentType("application/xml; charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    try 
    { 
     writeXmlValues(out, values); 
    } 
    finally 
    { 
     try 
     { 
      out.close(); 
     } 
     catch (Throwable ignored){} 
    } 
} 

我所面臨的問題通知。此字段可以包含帶分隔符的文本,並且可以將多行文本放入xml中。其結果將是如下:

<?xml version='1.0' encoding='UTF-8'?> 
<parameter name="Conclusion">eshgseht 
awegewhw 
agwhg</parameter> 

但在JS回調文字看起來有點不同(這裏是代碼完全一致):

<?xml version='1.0' encoding='UTF-8'?><parameter name="Conclusion">eshgseht awegewhw agwhg</parameter> 

行沒有再進!這不是jQuery的錯誤(就我在Firebug中看到的,響應已經是單行文本),這不是StAX的錯誤(它會生成適當的xml)。我不知道發生了什麼事。 我可以使用XML格式獲得換行嗎?或者我應該使用JSON或其他東西(這不是首選的方式)?

更新: 最後我找到了這種行爲的原因。即使使用setContentType(「application/xml」),響應也被解釋爲text/html。非常感謝您的建議。

+0

也許相關http://stackoverflow.com/questions/2986297/line-break-in-xml – Nicktar

回答

1

您是否考慮使用CDATA來寫入值? More info在CDATA和Example implementation

+0

+1。 XML,就像HTML一樣,除了空格之外,不會考慮換行符,除非將數據放入CDATA標識符中。 – davidethell

+0

在這種情況下,xml也會轉換成單行文本,換行消失。 – Zkejid

+0

發佈/使用'CDATA'更新代碼更改以及在控制器收到的數據日誌。 – ch4nd4n