0

みんな以下は、私が解析しようとしているxmlです

<?xml version="1.0" encoding="UTF-8"?><Categories><category name="Banquet & Marriage Hall" id="1" image=""/><category name="Crematorium, Burial Ground" id="2" image=""/><category name="Educational Institution" id="3" image=""/><category name="Embassies & Consulates" id="4" image=""/><category name="Fire Station" id="5" image=""/><category name="Government Office" id="6" image=""/></Categories>

以下は、私が使用しているパーサーのコードです

public byte parse(){

                SAXParserFactory spf = null;
                SAXParser sp = null;
                InputStream inputStream = null;

                try {
                    inputStream = new ByteArrayInputStream(data.getBytes());
                    spf = SAXParserFactory.newInstance();
                    if (spf != null) {
                        sp = spf.newSAXParser();
                        **sp.parse(inputStream, this);**


                    }
                }
                /*
                 * Exceptions need to be handled MalformedURLException
                 * ParserConfigurationException IOException SAXException
                 */

                catch (Exception e) {
                    System.out.println("Exception: " + e);
                    e.printStackTrace();
                } finally {
                    try {
                        if (inputStream != null)
                            inputStream.close();
                    } catch (Exception e) {
                    }
                }

                if (categorieslist != null && categorieslist.size() > 0) {
                //  Log.d("Array List Size",""+tipsList.get(4).getTitle());


                    return 1;
                } else {
                    return 0;
                }

            }

         public ArrayList<Categories> getParserCategoriesList(){
             return categorieslist;
         }

         public void startElement(String uri, String localName, String qName,
                    Attributes attributes) throws SAXException {

             if(localName.equalsIgnoreCase("Categories")){
                if(localName.equalsIgnoreCase("category")){
                    categories = new Categories();
                    categorieslist.add(categories);

                    categories.setId(attributes.getValue("id"));
                    Log.d("ID",attributes.getValue("id"));
                    categories.setName(attributes.getValue("name"));
                    Log.d("NAME",attributes.getValue("name"));
                    /*categories.setImage(attributes.getValue("image"));
                    Log.d("image",attributes.getValue("image"));*/
                }
             }

sp.parse() は、expatParser Exception を提供しているコードです。以前の 5 つの xml 解析で同じロジックを使用していましたが、このエラーは発生しません。私は何が間違っているのですか、それともxmlが間違っているのですか??

4

2 に答える 2

0

アンパサンド (&) 文字に達すると、パーサーが例外をスローしていると思います。ここであなたに似た問題を見つけることができます

于 2011-04-05T09:15:10.787 に答える
0

はい、前のコメントは正しいです。パーサーは & または任意の特殊文字に達すると例外をスローします。2 つのオプションがあります。

  1. 特殊文字を置き換える必要があります(エンコードされた値を使用してください)
  2. 特殊文字を含むCDATAでノードをバインドする必要があります..

ではごきげんよう

于 2013-12-11T10:23:22.717 に答える