我有一个XML文件,我正在通过SAXParser阅读,但我无法正确阅读它。 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")));
}
}
答案 0 :(得分:0)
从示例@
中提取http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/
有关sax @
的更多信息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();
}
}
}