1

コード:

public void parse(byte[] payload)
{
    try
    {

        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();

        DefaultHandler handler = new DefaultHandler()
        {
            boolean eid = false;
            boolean msg_id = false;
            boolean date_time = false;
            boolean temp = false;

            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
            {
                if (qName.equalsIgnoreCase("eid"))
                {
                    eid = true;
                }

                if (qName.equalsIgnoreCase("msg_id"))
                {
                    msg_id = true;
                }

                if (qName.equalsIgnoreCase("date_time"))
                {
                    date_time = true;
                }

                if (qName.equalsIgnoreCase("temperature"))
                {
                    temp = true;
                }
            }

            public void characters(char ch[], int start, int length) throws SAXException
            {

                if (eid)
                {
                    XMLMessagePacket.this.eid = new String(ch, start, length);
                    eid = false;
                }

                if (msg_id)
                {
                    XMLMessagePacket.this.msgId = new String(ch, start, length);
                    msg_id = false;
                }

                if (date_time)
                {
                    XMLMessagePacket.this.time =  new String(ch, start, length);
                    date_time = false;
                }

                if (temp)
                {
                    XMLMessagePacket.this.temperature.parseDouble(new String(ch, start, length));
                    temp = false;
                }

            }

        };

        saxParser.parse(new ByteArrayInputStream(payload), handler);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

XML

<?xml version="1.0"?>
<event>
        <eid>345345</eid>
        <msg_id>3242</msg_id>
        <date_time>11342345</date_time>
        <temperature>100</temperature>
</event>

問題:

org.xml.sax.SAXParseException:コンテンツはプロローグで許可されていません。

4

1 に答える 1

1

確認すべき点は、友人がこの「バグ」と一晩中戦ったことです。ファイルの先頭にバイト順マークが付いている可能性はありますか?文字列として解析すると、表示されなくなる場合があります。XMLのデフォルトのエンコーディングはUTF-8(BOMを必要としません)です。見えないものにつまずく可能性があります。

于 2013-01-23T00:50:26.540 に答える