Я пытаюсь разобрать простые SIP-сообщения, используя XPath и Android Одно из этих сообщений описано в этом документе .
Фактическое сообщение выглядит так:
<isComposing xmlns='urn:ietf:params:xml:ns:imiscomposing'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<state>active </state>
<contenttype> text/html </contenttype>
<refresh>60</refresh>
</isComposing>
У меня есть этот блок кода, который получает сообщение из запроса SIP и пытается проанализировать его, чтобы найти состояние,
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(false); // never forget this! THIS WAS TRUE ORIGINALLY CHANGED BY MAXSAP
DocumentBuilder builder;
try {
builder = domFactory.newDocumentBuilder();
Log.e("IMHandler","<onTransRequest> parsing body:: "+ req.getBody());
Document doc = builder.parse(req.getBody());
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr= xpath.compile("//isComposing/state/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
Log.e("IMHandler"," <onTransRequest> *************** PARSING ***********");
Log.e("IMHandler"," <onTransRequest> NodeValue"+nodes.item(i).getNodeValue());
Log.e("IMHandler"," <onTransRequest> *************** /PARSING ***********");
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
но в этой строке builder.parse (req.getBody ()); Я получаю сообщение об ошибке:
03-20 20:03:44.637: WARN/System.err(4150): java.net.MalformedURLException: Protocol not found: <SPAN STYLE="FONT-FAMILY:Arial; FONT-SIZE:10pt ">dfg</SPAN>
03-20 20:03:44.637: WARN/System.err(4150): at java.net.URL.<init>(URL.java:275)
03-20 20:03:44.637: WARN/System.err(4150): at java.net.URL.<init>(URL.java:159)
03-20 20:03:44.637: WARN/System.err(4150): at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:120)
03-20 20:03:44.637: WARN/System.err(4150): at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:158)
03-20 20:03:44.637: WARN/System.err(4150): at org.sipdroid.sipua.ui.IMHandler.onTransRequest(IMHandler.java:239)
03-20 20:03:44.637: WARN/System.err(4150): at org.zoolu.sip.transaction.TransactionServer.onReceivedMessage(TransactionServer.java:148)
03-20 20:03:44.637: WARN/System.err(4150): at org.zoolu.sip.provider.SipProvider.processReceivedMessage(SipProvider.java:1091)
03-20 20:03:44.637: WARN/System.err(4150): at org.zoolu.sip.provider.SipProvider.onReceivedMessage(SipProvider.java:1203)
03-20 20:03:44.637: WARN/System.err(4150): at org.zoolu.sip.provider.UdpTransport.onReceivedPacket(UdpTransport.java:117)
03-20 20:03:44.637: WARN/System.err(4150): at org.zoolu.net.UdpProvider.run(UdpProvider.java:189)
Кто-нибудь сталкивался с такой же ошибкой? Я новичок в использовании XPath, также обратите внимание, что я изменил предупреждения пространства имен, надеясь, что это проблема пространства имен, но не повезло.