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

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

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

Я пытаюсь разработать функцию экспорта XML, чтобы пользователи моего приложения могли экспортировать свои данные в формате XML. Я подготовил эту функцию и работаю, пока в некоторых случаях она не начала давать сбой. Затем я понял, что это из-за некоторых специальных символов, которые нужно кодировать. например, данные могут содержать & или! или% или 'или # и т. д. и т. д., и это должно быть правильно экранировано. Затем я понял, что это из-за некоторых специальных символов, которые нужно кодировать. например, данные могут содержать & или! или% или 'или # и т. д. и т. д., и это должно быть правильно экранировано. Затем я понял, что это из-за некоторых специальных символов, которые нужно закодировать. например, данные могут содержать & или! или% или 'или # и т. д. и т. д., и это должно быть правильно экранировано. I was wondering if there is a generic utility available that can escape all of the special characters as per the XML specification. I couldn't find anything on Google.

Is there something like that already there? or Is there any other way to do it?

Here is the code I am using to generate 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);`

Sample XML:


<Data>
    <TimeStamp>2010-08-31 00:00:00.0</TimeStamp>
    <[Name that needs to be encoded]>0.0</[Name that needs to be encoded]>
    <Group_Average>1860.0</Group_Average>
</Data>
30
задан Salman A. Kagzi 29 November 2010 в 06:59
поделиться