gpt4 book ai didi

android - 从 SD 卡上的 XML 文件读取时出现问题

转载 作者:行者123 更新时间:2023-11-30 04:04:39 25 4
gpt4 key购买 nike

friend 们,我在从位于 SD 卡上的 xml 文件中读取信息时遇到了问题。代码正在成功执行,但是 logcat 上没有显示任何内容,也没有弹出异常。请帮助我。

public class History extends Activity
{
private ListView lstv;

static ArrayList<Records> arr;

@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
setContentView(R.layout.history);

try {


String path = Environment.getExternalStorageDirectory()+"/saved_images/history.xml";
File file = new File(path);
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
XMLReader reader=parser.getXMLReader();

XMLHandler handler=new XMLHandler();

//parser.parse(stream,handler);
reader.parse(new InputSource(new InputStreamReader(new FileInputStream(file))));

arr=handler.getArray();

ArrayAdapter<Records> adpt=new ArrayAdapter<Records>(this, android.R.layout.simple_list_item_1,arr);
//lstv.setAdapter(adpt);

handler.startDocument();

} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

class XMLHandler extends DefaultHandler {

ArrayList<Records> array;
Records records ;
String strCurrentValue = null;

public ArrayList<Records> getArray() {
return array;
}

@Override
public void startDocument() throws SAXException {
super.startDocument();
array=new ArrayList<Records>();
}

@Override
public void startElement(String uri, String elementName, String qName,Attributes attributes) throws SAXException {
super.startElement(uri, elementName, qName, attributes);

if(elementName.equals("Record"))
{
records=new Records();
}
}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);

strCurrentValue=new String(ch, start, length);
}

@Override
public void endElement(String uri, String elementName, String qName)
throws SAXException {
super.endElement(uri, elementName, qName);
if(elementName.equals("date"))
{
records.date=strCurrentValue;
}else if(elementName.equals("cc"))
{
records.cc=strCurrentValue;
}

}

@Override
public void endDocument() throws SAXException {
super.endDocument();

for(Records c:array)
{
Log.d("XmlHandler", c.toString());
}
}
}
}

我无法在 log-cat 或屏幕上看到任何内容。请使用代码段帮助我获取相同的代码。谢谢

最佳答案

在我看来,您的处理程序从未真正将记录添加到数组中 - 看起来您需要为类型为“Record”的 endElement 包含一个操作,将其添加到数组中。

此外,正如 Giovanni 所说,这整段代码将占用 UI 线程,因此如果 XML 文件非常重要,则应在带有进度对话框的单独线程中处理。

关于android - 从 SD 卡上的 XML 文件读取时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11929356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com