Экранирование специального символа при создании XML в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Экранирование специального символа при создании XML в Java

Сообщение Anonymous »

Я пытаюсь разработать функцию экспорта XML, чтобы дать пользователям моего приложения возможность экспортировать свои данные в формат XML. У меня эта функция готова и работает, пока в некоторых случаях она не начала давать сбой. Потом я понял, что это из-за каких-то специальных символов, которые нужно закодировать. например, данные могут содержать & или ! или %, или 'или # и т. д. и т. д., и это необходимо правильно экранировать.
Мне интересно, существует ли универсальная утилита, которая может экранировать все специальные символы согласно спецификации XML. В Google ничего не нашел.

Есть ли уже что-то подобное? или есть ли другой способ сделать это?

Вот код, который я использую для генерации XML



Document xmldoc = new DocumentImpl();
Element root = xmldoc.createElement("Report");

Element name= xmldoc.createElement((exportData.getChartName() == null) ? "Report" : exportData.getChartName());
if (exportData.getExportDataList().size() > 0
&& exportData.getExportDataList().get(0) instanceof Vector) {
// First row is the HEADER, i.e name
Vector name = exportData.getExportDataList().get(0);
for (int i = 1; i value = exportData.getExportDataList().get(i);
Element sub_root = xmldoc.createElement("Data");
//I had to remove a for loop from here. StackOverflow description field would not take that. :(
// Insert header row
Element node = xmldoc.createElementNS(null, replaceUnrecognizedChars(name.get(j)));
Node node_value = xmldoc.createTextNode(value.get(j));
node.appendChild(node_value);
sub_root.appendChild(node);
chartName.appendChild(sub_root);
}
}
}
root.appendChild(name);

// Prepare the DOM document for writing
Source source = new DOMSource(root);

// Prepare the output file
Result result = new StreamResult(file);

// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);`


Пример XML:



2010-08-31 00:00:00.0
0.0
1860.0



Подробнее здесь: https://stackoverflow.com/questions/430 ... ml-in-java

Вернуться в «JAVA»