удалить плохие символы, вызывающие сбой xml - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать xml файлы с данными из API, которые мы вернули в формате json. Он работает, но иногда xml файлы при открытии терпят неудачу из-за плохого xml. Я проследил это до некоторого символа, появляющегося в паре полей, и подумал, что использование тегов CData поможет:

        String c_title = jRootNode.path("snippet").path("title").asText();
        String c_description = jRootNode.path("snippet").path("description").asText();

        if(c_title.contains("'") || c_description.contains("'") || c_title.contains("'") || c_description.contains("'") || c_title.contains("�") || c_description.contains("�")){
            c_title = c_title.replace("'", "'");
            c_description = c_description.replace("'", "'");
            c_title = c_title.replace("'", "'");
            c_description = c_description.replace("'", "'");
            c_title = c_title.replace("�", " ");
            c_description = c_description.replace("�", " ");
        }
            e = doc.createElement("title");
            e.appendChild(doc.createCDATASection(c_title));
            video.appendChild(e);

            e = doc.createElement("description");
            e.appendChild(doc.createCDATASection(c_description));
            video.appendChild(e);
        }

Но все еще есть символы, которые выходят из строя xml:

<title><![CDATA[Ju  eu amei as  doas  casas  e  a casa da Cris  não  e 
   cachorro  e urso   e  eu  amei  linda maravilhosa sempre me 
  ]]>&#0;&#0;&#0;&#0;&#0;&#0;&#0;&#0;<![CDATA[ animado   educada  a Cris  
  linda  
  maravilhosa  
  Texcinho  legal  bom de rima  doido
  A ju  maravilhosa  educada  sempre me ]]>&#0;&#0;&#0;&#0;&#0;&#0;&#0;&#0;<

Есть ли способ проверить xml без шаблона или избавиться от всех этих видов кодирования?

РЕДАКТИРОВАТЬ:

Я не могу поделиться файлом xml Сам по себе, поскольку это проблема конфиденциальности, а не полный код. Файл xml анализируется клиентским процессом, и в нем происходит сбой; при отладке мы проверяем xml в онлайн-инструменте xml, чтобы проверить, действительно ли xml был плохим. xml создается в java (пружина) с использованием:

       DocumentBuilderFactory docFactory = 
              DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

        // root elements
        Document doc = docBuilder.newDocument();

        ....
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");            

        StringWriter writer = new StringWriter();
        transformer.transform(new DOMSource(doc), new StreamResult(writer));
        String output = writer.getBuffer().toString();

Так что, если кто-то может помочь с любой из проблем: 1. проверьте текст, чтобы убедиться, что кодовые символы не включены в текст 2. проверить окончательный xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...