Разбор строки в документ

Я пытаюсь преобразовать строку в документ. Содержимое строки - это данные XML, которые я получаю из сообщения SIP.

Я пытаюсь сделать так:

DocumentBuilder db;
Document pidf;

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
db = factory.newDocumentBuilder();
InputSource is = new InputSource( new StringReader( content ));

pidf = db.parse(is);

Но я получаю такую ​​ошибку:

org.xml.sax.SAXParseException: Unexpected token (position:TEXT [B@fd41b3b@1:11 in java.io.StringReader@83dc258) 

Я использую Log.d (), чтобы увидеть содержимое строки, и вижу следующее:

<?xml version = "1.0" encoding = "UTF-8" standalone = "no"?><presence xmlns = "urn:ietf:params:xml:ns:pidf" xmlns:dm = "urn:ietf:params:xml:ns:pidf:data-model" xmlns:iot = "urn:uma-etsit-ic:internet-of-things" xmlns:ts = "PIDF" entity = "pres:[email protected]:5050"><tuple id = "qoica32"><status><basic>open</basic></status><ts:timed-status from = "2018-09-07T19:30:30.119+02:00" until = "2018-09-07T20:30:30.129+02:00"><basic>close</basic></ts:timed-status></tuple><dm:device id = "dtemp1"><iot:tecnologia><iot:802-11/></iot:tecnologia><iot:bateria>100</iot:bateria></dm:device><dm:person><iot:sensor><iot:temperatura/></iot:sensor><iot:unindad><iot:celsius/></iot:unindad><iot:valor>29.3</iot:valor></dm:person></presence>

Я копирую и вставляю на веб-страницу валидатора, и она прошла проверку.

Из-за вывода ошибок я думаю, что это может быть ошибка формата при синтаксическом анализе, я попытался добавить is.setEncoding("UTF-8"), чтобы решить эту проблему, но все равно получаю ту же ошибку.

Я создал эту строку из XML в программе на Java, это код:

public String getContent() {

    StringWriter sw = new StringWriter();

    try {

        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.INDENT, "no");
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

        transformer.transform(new DOMSource(pidfContent), new StreamResult(sw));

        return sw.toString();
    } catch (TransformerConfigurationException ex) {
        Logger.getLogger(PIDF.class.getName()).log(Level.SEVERE, null, ex);
    } catch (TransformerException ex) {
        Logger.getLogger(PIDF.class.getName()).log(Level.SEVERE, null, ex);
    }

    return sw.toString();

}

Что мне не хватает или что я делаю неправильно в Android?

Заранее спасибо.

Возможный дубликат org.xml.sax.SAXParseException: неожиданный токен при разборе XML

ʍѳђઽ૯ท 07.09.2018 19:53

Это решение все еще не работает для меня

Josete Manu 07.09.2018 19:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
49
1

Ответы 1

Я совершал большую ошибку: я пытался разобрать данные байта [], выполнение new String(content) решило мою проблему!

Другие вопросы по теме