【问题标题】:Android SAXParse Get Value Between TagsAndroid SAXParse 获取标签之间的值
【发布时间】:2013-08-08 06:55:35
【问题描述】:

我有一个通过 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")));
    }

}

【问题讨论】:

    标签: android xml-parsing sax


    【解决方案1】:

    借鉴示例@

    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();
             }
    
           }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-07
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多