我需要將CSV轉換爲XML然後轉換爲OutputStream。規則是在我的代碼中將"
轉換爲"
。在Java中正確的xml轉義
輸入CSV行:
{"Test":"Value"}
預期輸出:
<root>
<child>{"Test":"Value"}</child>
<root>
電流輸出:
<root>
<child>{&quot;Test&quot;:&quot;Value&quot;}</child>
<root>
代碼:
File file = new File(FilePath);
BufferedReader reader = null;
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
Document newDoc = domBuilder.newDocument();
Element rootElement = newDoc.createElement("root");
newDoc.appendChild(rootElement);
reader = new BufferedReader(new FileReader(file));
String text = null;
while ((text = reader.readLine()) != null) {
Element rowElement = newDoc.createElement("child");
rootElement.appendChild(rowElement);
text = StringEscapeUtils.escapeXml(text);
rowElement.setTextContent(text);
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Source xmlSource = new DOMSource(newDoc);
Result outputTarget = new StreamResult(outputStream);
TransformerFactory.newInstance().newTransformer().transform(xmlSource, outputTarget);
System.out.println(new String(baos.toByteArray()))
你能幫忙嗎?我想念什麼時候&
轉換爲&
?
你是雙重逃跑。 DOM會爲你逃脫,但你也逃脫了。刪除對'StringEscapeUtils.escapeXml(文本)'的調用。 – Andreas
我已閱讀關於此。奇怪的是,在消除逃跑後,根本沒有逃跑。 – user3305630
因爲你只需要在''''引用的值的屬性中跳過''''''''這是有效的XML:''。 ''''''''''''''''''''''''''''''''''''''通常也總是被引用。 –
Andreas