公众号 对我的服务器 post 文本消息时 未转义 ]]>
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(request.getInputStream()); Element root = document.getDocumentElement(); String originId = root.getElementsByTagName("ToUserName").item(0).getTextContent(); String openid = root.getElementsByTagName("FromUserName").item(0).getTextContent(); String createTime = root.getElementsByTagName("CreateTime").item(0).getTextContent(); String msgType = root.getElementsByTagName("MsgType").item(0).getTextContent(); String msgId = root.getElementsByTagName("MsgId").item(0).getTextContent(); switch (msgType) { case "text": String msg = root.getElementsByTagName("Content").item(0).getTextContent(); return new TextMessage(originId, openid, createTime, msg, msgId); default: return null; } |
这个是我用来解析消息的,经测试,若消息中含有]]>这样的文本就会使这段代码抛出SAXParseException,你们可不可以不要全都用CDATA来输出xml啊喂,这咋整啊这
你们的xml都是这样的:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId></xml> |
引用自你们的文档
这要是输入个]]>谁遭得住啊这
