Я пытаюсь преобразовать строку в документ. Содержимое строки - это данные 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?
Заранее спасибо.
Это решение все еще не работает для меня




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