2012-12-20 32 views

Trả lời

11

Tôi không chắc chắn nếu bạn có thể nhận được rằng thông qua hỗ trợ XML bản xứ, nhưng bạn có thể làm một cái gì đó như:

scala.xml.XML.loadString("<reason><![CDATA[%s]]></reason>".format(failedReason)) 

Bạn mất một số xác nhận thời gian biên dịch theo cách đó, nhưng nó sẽ cho bạn phần tử xml với dữ liệu bạn đang tìm kiếm. Vì nó trả về một scala.xml.Elem, bạn cũng có thể nhúng kết quả vào một cấu trúc XML lớn hơn.

EDIT

Sau khi suy nghĩ về vấn đề này nhiều hơn một chút, sau đây có thể là một cách beter (và ít mong manh) để làm điều này. Nó hạn chế phần văn bản tự do chỉ với CDATA, giảm thiểu tiềm năng cho các biểu thức không cân bằng.

<reason>{ scala.xml.Unparsed("<![CDATA[%s]]>".format(failedReason)) }</reason> 
+0

Khối chưa phân tích thứ hai hoạt động tuyệt vời! – maxfridbe

23

Nó có thể còn đơn giản hơn:

val reason = <reason>{scala.xml.PCData(failedReason)}</reason> 
+1

Bạn có thể muốn thoát khỏi bất hợp pháp ']]>': 'content.replaceAll ("]]> ","]]]]> ")' –

Các vấn đề liên quan