Правильный выход XML в Java
Мне нужно конвертировать CSV в XML, а затем в OutputStream. Правило конвертировать "
в "
в моем коде.
Введите строку 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()))
Не могли бы вы помочь? Что я скучаю и когда &
преобразовать в &
?
1 ответ
Библиотека XML будет автоматически экранировать строки, которые должны быть экранированы XML, поэтому вам не нужно вручную экранировать, используя StringEscapeUtils.escapeXml
, Просто удалите эту строку, и вы получите именно то, что ищете для правильно экранированного XML.
XML не требует "
символы для экранирования везде, только внутри значений атрибутов. Так что это действительный XML уже:
<root>
<child>{"Test":"Value"}</child>
<root>
Вы бы избежали кавычек, если бы у вас был атрибут, который содержал кавычку, например: <child attr="properly "ed"/>
Это одна из основных причин использования библиотеки XML: тонкости цитирования уже обработаны для вас. Не нужно читать спецификацию XML, чтобы убедиться, что вы правильно указали правила цитирования.