0

我有一个通过 SAXParser 读取的 XML 文件,但我无法正确读取它。XML 的结构如下:

<game>
  <players>
    <player>
      <name>Player 1</name>
      <score>100</score>
    </player>
  </players>
</game>

如何让 Android SAXParser 读取标签之间的值?这是我拥有的代码,但它正在寻找标签的属性,而不是之间的文本。

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

    if(localName.equals("name")) {
        names.add(attributes.getValue("name"));
    }
    else if(localName.equals("score")) {    
        scores.add(Integer.parseInt(attributes.getValue("score")));
    }

}
4

1 回答 1

0

借鉴示例@

http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

更多关于萨克斯的信息@

http://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html

除了 sax,你应该看看推荐的 xmllpullparser。

从文档中引用。

我们推荐 XmlPullParser,这是一种在 Android 上解析 XML 的高效且可维护的方式

检查链接@

http://developer.android.com/training/basics/network-ops/xml.html

public void readxml(){ 
        try {

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

        DefaultHandler handler = new DefaultHandler() {

        boolean bname = false;
        boolean bscore = false;


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

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

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

        public void endElement(String uri, String localName,
            String qName) throws SAXException {

        }

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

            if (bname) {
                Toast.makeText(getApplicationContext(), new String(ch, start, length), 10000).show();
                bname = false;
            }

            if (bscore) {
                Toast.makeText(getApplicationContext(), new String(ch, start, length), 10000).show();
                bscore = false;
            }
        }
      };

           saxParser.parse("myxmltoparse", handler);

         } catch (Exception e) {
           e.printStackTrace();
         }

       }
}
于 2013-08-07T04:04:32.567 回答