dro*_*ski 5 java android saxparser
我使用SAX XML Parser,当我使用时:
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException
Run Code Online (Sandbox Code Playgroud)
我可以得到属性.但我需要从public void endElement获取属性
解析类似的东西:
<item name="test" value="somedata" />
Run Code Online (Sandbox Code Playgroud)
码:
公共类SAXXMLHandler扩展DefaultHandler {
private ArrayList<itemsList> items;
private String tempVal;
private itemsList tempEmp;
private PackageManager manager;
private String packName;
public SAXXMLHandler(PackageManager manager, String packName) {
items = new ArrayList<itemsList>();
this.manager = manager;
this.packName = packName;
}
public void characters(char[] ch, int start, int length)
throws SAXException {
tempVal = new String(ch, start, length);
}
// Event Handlers
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
Log.d("INFO", "startElement " + localName + ", " + qName + ", " + attributes);
// reset
tempVal = "";
if (qName.equalsIgnoreCase("item")) {
// create a new instance of employee
tempEmp = new itemsList();
tempEmp.setName(attributes.getValue("name"));
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
Log.d("INFO", "endElement " + localName + ", " + qName);
}
Run Code Online (Sandbox Code Playgroud)
并且不要从startElement logcat
UPDATE
我在片段中使用:
SAXXMLHandler handler = new SAXXMLHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(asset, handler);
items = SAXXMLHandler.icons;
Util.l(String.valueOf(SAXXMLHandler.icons.size())); //log
for(itemList item:SAXXMLHandler.icons)
{
Util.l(item.getComponent()+"\t\t"+item.getComponent()); //log
}
Run Code Online (Sandbox Code Playgroud)
SAXXMLHandler看起来:
public class SAXXMLHandler extends DefaultHandler {
public static ArrayList<itemsList> items;
private itemsList item;
public SAXXMLHandler() {
items = new ArrayList<itemsList>();
}
public void characters(char[] ch, int start, int length)
throws SAXException {
}
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
item = new itemsList();
Log.d("INFO", "startElement " + localName + ", " + qName);
if (qName.equalsIgnoreCase("item")) {
item.setComponent(attributes.getValue("component"));
items.add(item);
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
}
}
Run Code Online (Sandbox Code Playgroud)
但仍然没有:/
其他应用程序中的XML文件,我解析 http://pastebin.com/5GEthfmU
将 System.out.println 更改为 ur Log.ins ..
项目.java
package com.rofl;
public class Item {
private String component;
private String drawable;
public String getComponent() {
return component;
}
public void setComponent(String component) {
this.component = component;
}
public String getDrawable() {
return drawable;
}
public void setDrawable(String drawable) {
this.drawable = drawable;
}
}
Run Code Online (Sandbox Code Playgroud)
SAXXMLHandler.java
package com.rofl;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXXMLHandler extends DefaultHandler {
public static void main(String argv[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
SAXXMLHandler handler = new SAXXMLHandler();
saxParser.parse("src/file.xml", handler);
System.out.println(SAXXMLHandler.itemList.size());
for(Item item:itemList)
{
System.out.println(item.getComponent()+"\t\t"+item.getDrawable());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static List<Item> itemList = new ArrayList<Item>();
private Item item;
public SAXXMLHandler() {
itemList = new ArrayList<Item>();
}
public void characters(char[] ch, int start, int length)
throws SAXException {
}
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
item = new Item();
if (qName.equalsIgnoreCase("item")) {
item.setComponent(attributes.getValue("component"));
item.setDrawable(attributes.getValue("drawable"));
itemList.add(item);
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
}
}
Run Code Online (Sandbox Code Playgroud)
输出将是:-
8
ComponentInfo{com.designrifts.ultimatethemeui/ultimatethemeui.themeactivity} icon
ComponentInfo{com.chrislacy.actionlauncher.pro/com.chrislacy.launcher.Launcher} apps_actionlauncherpro
ComponentInfo{com.teslacoilsw.launcher/com.android.launcher2.Launcher} apps_novalauncher
ComponentInfo{com.teslacoilsw.launcher.prime/.NovaLauncherPrimeActivity} apps_novalauncher
ComponentInfo{com.anddoes.launcher/com.anddoes.launcher.Launcher} apps_apexlauncher
ComponentInfo{com.anddoes.launcher.pro/com.anddoes.launcher.pro.ApexLauncherProActivity} apps_apexlauncher
ComponentInfo{org.adw.launcher/org.adw.launcherlib.Launcher} apps_adwlauncher
ComponentInfo{org.adwfreak.launcher/org.adw.launcherlib.Launcher} apps_adwex
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4399 次 |
| 最近记录: |