收藏
回答

公众号 对我的服务器 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>

引用自你们的文档

这要是输入个]]>谁遭得住啊这

最后一次编辑于  11-22
回答关注问题邀请回答
收藏
问题标签