private List<Mp3Info> parseXML(String xmlStr){
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
List<Mp3Info> infos = new ArrayList<Mp3Info>();
try{
XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
Mp3ContentHandler mp3ListContentHandler = new Mp3ContentHandler(infos);
xmlReader.setContentHandler(mp3ListContentHandler);
xmlReader.parse(new InputSource(new StringReader(xmlStr)));
for (Iterator<Mp3Info> iterator = infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
System.out.println(mp3Info);
}
}
catch(Exception e){
e.printStackTrace();
}
return infos;
}
这个方法是对下载的xml文件的简析但是这句xmlReader.parse(new InputSource(new StringReader(xmlStr)));执行不了
String xml = downloadXML("http://192.168.136.125:8080/mp3/resouces.xml");
System.out.println(xml);
parseXML(xml);这段代码是调用上面的方法
System.out.println(xml);
这个可以输出得到的xml文本
xmlReader.parse(new InputSource(new StringReader(xmlStr)));就这句执行了不了 也没有报错 是不是我哪里少了东西了
高手指教

解决方案 »

  1.   

    xmlReader.parse(new InputSource(new StringReader(xmlStr)), mp3ListContentHandler);
    这样呢?
    你还是确认下你的hander有没有问题吧,或者把错误的LOGCAT信息贴上来
      

  2.   

    没报异常 我看的是mars的视屏 我把他的源码导入执行还是不行
    xmlReader.parse(new InputSource(new StringReader(xmlStr)));意思是这句(包括这句)以后的代码都不执行了
    这是全部的logcat 根本就没有error
    09-29 03:55:19.564: DEBUG/AndroidRuntime(244): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    09-29 03:55:19.592: DEBUG/AndroidRuntime(244): CheckJNI is ON
    09-29 03:55:21.620: DEBUG/AndroidRuntime(244): --- registering native functions ---
    09-29 03:55:21.770: INFO/jdwp(244): received file descriptor 18 from ADB
    09-29 03:55:22.608: DEBUG/ddm-heap(244): Got feature list request
    09-29 03:55:24.331: DEBUG/AndroidRuntime(244): Shutting down VM
    09-29 03:55:24.351: DEBUG/dalvikvm(244): DestroyJavaVM waiting for non-daemon threads to exit
    09-29 03:55:24.361: DEBUG/dalvikvm(244): DestroyJavaVM shutting VM down
    09-29 03:55:24.361: DEBUG/dalvikvm(244): HeapWorker thread shutting down
    09-29 03:55:24.361: DEBUG/dalvikvm(244): HeapWorker thread has shut down
    09-29 03:55:24.370: DEBUG/jdwp(244): JDWP shutting down net...
    09-29 03:55:24.392: DEBUG/jdwp(244): +++ peer disconnected
    09-29 03:55:24.392: INFO/dalvikvm(244): Debugger has detached; object registry had 1 entries
    09-29 03:55:24.420: DEBUG/dalvikvm(244): VM cleaning up
    09-29 03:55:24.461: DEBUG/dalvikvm(244): LinearAlloc 0x0 used 665652 of 4194304 (15%)
    09-29 03:55:25.280: DEBUG/AndroidRuntime(254): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    09-29 03:55:25.280: DEBUG/AndroidRuntime(254): CheckJNI is ON
    09-29 03:55:25.660: DEBUG/AndroidRuntime(254): --- registering native functions ---
    09-29 03:55:25.671: INFO/jdwp(254): received file descriptor 18 from ADB
    09-29 03:55:26.141: DEBUG/ddm-heap(254): Got feature list request
    09-29 03:55:27.150: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.bekeer.mp3player/.Mp3ListActivity }
    09-29 03:55:27.162: DEBUG/AndroidRuntime(254): Shutting down VM
    09-29 03:55:27.162: DEBUG/dalvikvm(254): DestroyJavaVM waiting for non-daemon threads to exit
    09-29 03:55:27.181: DEBUG/dalvikvm(254): DestroyJavaVM shutting VM down
    09-29 03:55:27.181: DEBUG/dalvikvm(254): HeapWorker thread shutting down
    09-29 03:55:27.181: DEBUG/dalvikvm(254): HeapWorker thread has shut down
    09-29 03:55:27.191: DEBUG/jdwp(254): JDWP shutting down net...
    09-29 03:55:27.191: DEBUG/jdwp(254): +++ peer disconnected
    09-29 03:55:27.191: INFO/dalvikvm(254): Debugger has detached; object registry had 1 entries
    09-29 03:55:27.211: DEBUG/dalvikvm(254): VM cleaning up
    09-29 03:55:27.270: DEBUG/dalvikvm(254): LinearAlloc 0x0 used 676828 of 4194304 (16%)
    09-29 03:56:09.152: INFO/global(207): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    09-29 03:56:09.311: WARN/System.err(207): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 117: mismatched tag
    09-29 03:56:09.344: WARN/System.err(207):     at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:492)
    09-29 03:56:09.344: WARN/System.err(207):     at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:477)
    09-29 03:56:09.344: WARN/System.err(207):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:317)
    09-29 03:56:09.350: WARN/System.err(207):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:273)
    09-29 03:56:09.350: WARN/System.err(207):     at com.bekeer.mp3player.Mp3ListActivity.parseXML(Mp3ListActivity.java:69)
    09-29 03:56:09.350: WARN/System.err(207):     at com.bekeer.mp3player.Mp3ListActivity.onOptionsItemSelected(Mp3ListActivity.java:49)
    09-29 03:56:09.350: WARN/System.err(207):     at android.app.Activity.onMenuItemSelected(Activity.java:2096)
    09-29 03:56:09.360: WARN/System.err(207):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:825)
    09-29 03:56:09.360: WARN/System.err(207):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139)
    09-29 03:56:09.370: WARN/System.err(207):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:813)
    09-29 03:56:09.370: WARN/System.err(207):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:523)
    09-29 03:56:09.370: WARN/System.err(207):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
    09-29 03:56:09.370: WARN/System.err(207):     at android.view.View.onTouchEvent(View.java:4133)
    09-29 03:56:09.370: WARN/System.err(207):     at android.widget.TextView.onTouchEvent(TextView.java:6510)
    09-29 03:56:09.381: WARN/System.err(207):     at android.view.View.dispatchTouchEvent(View.java:3672)
    09-29 03:56:09.381: WARN/System.err(207):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
    09-29 03:56:09.381: WARN/System.err(207):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
    09-29 03:56:09.381: WARN/System.err(207):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
    09-29 03:56:09.381: WARN/System.err(207):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
    09-29 03:56:09.391: WARN/System.err(207):     at android.os.Handler.dispatchMessage(Handler.java:99)
    09-29 03:56:09.391: WARN/System.err(207):     at android.os.Looper.loop(Looper.java:123)
    09-29 03:56:09.391: WARN/System.err(207):     at android.app.ActivityThread.main(ActivityThread.java:4203)
    09-29 03:56:09.391: WARN/System.err(207):     at java.lang.reflect.Method.invokeNative(Native Method)
    09-29 03:56:09.401: WARN/System.err(207):     at java.lang.reflect.Method.invoke(Method.java:521)
    09-29 03:56:09.401: WARN/System.err(207):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    09-29 03:56:09.401: WARN/System.err(207):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    09-29 03:56:09.401: WARN/System.err(207):     at dalvik.system.NativeStart.main(Native Method)
    09-29 03:56:09.430: WARN/InputManagerService(53): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43939370
      

  3.   

    system.err有很多,自己看下
    09-29 03:56:09.311: WARN/System.err(207): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 117: mismatched tag
    这里说的很明白,解析的时候没有找到匹配的标签。
    你这个Mp3ContentHandler是什么定义的,是继承DefaultHandler的吧,肯定有问题
      

  4.   

    xmlReader.parse(new InputSource(new StringReader(xmlStr)));
    这句也有问题,log说了:
    09-29 03:56:09.152: INFO/global(207): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    所以xmlStr是不是太大了?
    你是先把xml内容都读出来了是么?
    建议这样
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser parser = factory.newSAXParser();
    MyHandler handler = new MyHandler(context, keyboard, defDis.getWidth(), defDis.getHeight());
    System.out.println("getMyKeyboard");
    parser.parse(context.getAssets().open(config), handler);config就是对应的xml文件名,读取的工作交给xml解析来做。
      

  5.   

    这就是Mp3ComtentHandler类package com.bekeer.xml;import java.util.List;import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;import com.bekeer.model.Mp3Info;public class Mp3ContentHandler extends DefaultHandler{
    private List<Mp3Info> infos = null;
    private Mp3Info mp3Info = null;
    private String tagName = null; public Mp3ContentHandler(List<Mp3Info> infos) {
    super();
    this.infos = infos;
    } public List<Mp3Info> getInfos() {
    return infos;
    } public void setInfos(List<Mp3Info> infos) {
    this.infos = infos;
    } @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    String temp = new String(ch, start, length);
    if (tagName.equals("id")) {
    mp3Info.setId(temp);
    } else if (tagName.equals("mp3.name")) {
    mp3Info.setMp3Name(temp);
    } else if (tagName.equals("mp3.size")) {
    mp3Info.setMp3Size(temp);
    } else if (tagName.equals("lrc.name")) {
    mp3Info.setLrcName(temp);
    } else if (tagName.equals("lrc.size")) {
    mp3Info.setLrcSize(temp);
    }
    } @Override
    public void endDocument() throws SAXException {
    super.endDocument();
    } @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    if (qName.equals("resource")) {
    infos.add(mp3Info);
    System.out.println(infos.size());
    }
    tagName = ""; } @Override
    public void startDocument() throws SAXException {
    // TODO Auto-generated method stub
    super.startDocument();
    } @Override
    public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
    this.tagName = localName;
    if (tagName.equals("resource")) {
    mp3Info = new Mp3Info();
    }
    }
    }
      

  6.   

    xml文件格式可能有问题,标签不匹配。下载到本地查看一下
      

  7.   


    <?xml version="1.0" encoding="ISO-8859-1"?><resources>
    <resource>
    <id>0001</id>
    <mp3.name>ÕÅÐÅÕÜ - ±ðÅÂÎÒÉËÐÄ.mp3</mp3.name>
    <mp3.size>4642238</mp3.size>
    <lrc.name>ÕÅÐÅÕÜ - ±ðÅÂÎÒÉËÐÄ.lrc</lrc.name>
    <lrc.size>1782</lrc.size>
    </resource> <resource>
    <id>0002</id>
    <mp3.name>sarah connor - just one last dance.mp3</mp3.name>
    <mp3.size>6448786</mp3.size>
    <lrc.name>sarah connor - just one last dance.lrc</lrc.name>
    <lrc.size>3226</lrc.size>
    </resource>
    </resources>
    这是xml文件 我在本地服务器配置的 
    现在可以执行xmlReader.parse(new InputSource(new StringReader(xmlStr)));了
    但是后面迭代不能执行
    这是 黄色的logcat
    09-29 05:37:29.730: WARN/UsageStats(64): Unexpected resume of com.android.launcher while already resumed in com.bekeer.mp3player
    09-29 05:37:29.830: WARN/InputManagerService(64): Got RemoteException sending setActive(false) notification to pid 265 uid 10022
    09-29 05:37:30.609: WARN/ResourceType(64): No package identifier when getting value for resource number 0x7f060000
    09-29 05:37:30.619: WARN/ResourceType(64): No package identifier when getting value for resource number 0x7f060001
    09-29 05:37:30.808: WARN/ResourceType(64): No package identifier when getting value for resource number 0x7f060000
    09-29 05:37:30.820: WARN/ResourceType(64): No package identifier when getting value for resource number 0x7f060001
    09-29 05:37:40.140: WARN/KeyCharacterMap(314): No keyboard for id 0
    09-29 05:37:40.150: WARN/KeyCharacterMap(314): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    09-29 05:37:41.618: WARN/InputManagerService(64): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43759bf0
    还有dinjay发的MyHandler handler = new MyHandler(context, keyboard, defDis.getWidth(), defDis.getHeight());
    这里面的参数我不太懂 
      

  8.   

    我那个是我程序中的例子一部分,就是一个自己定义的hander类而已,不用管。
      

  9.   

    xml的问题 仔细找找 我的也是
      

  10.   

    楼主你解决了?我也是同样的问题!看帮助文档!XMLReader is the interface that an XML parser's SAX2 driver must implement. 不过具体怎么样修改还是不懂?
      

  11.   

    我也是这个问题,看的都是mars的视频把
      

  12.   

    我的也是这个问题 我还以为就我一个人有这问题呢,看mars的视频 他的就没事。
    求教高手,QQ 743700338
      

  13.   

    请问有哪位大哥解决了这个问题吗?我的也是大概这样的问题,日志如下!07-09 12:53:54.418: WARN/UsageStats(52): Unexpected resume of com.android.launcher while already resumed in com.mp3player
    07-09 12:53:54.467: WARN/InputManagerService(52): Got RemoteException sending setActive(false) notification to pid 492 uid 10027
    07-09 12:53:55.477: WARN/ResourceType(52): No package identifier when getting value for resource number 0x7f060000
    07-09 12:53:55.487: WARN/ResourceType(52): No package identifier when getting value for resource number 0x7f060001
    07-09 12:53:55.677: WARN/ResourceType(52): No package identifier when getting value for resource number 0x7f060000
    07-09 12:53:55.677: WARN/ResourceType(52): No package identifier when getting value for resource number 0x7f060001
    07-09 12:53:58.628: WARN/System.err(523): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: no element found
    07-09 12:53:58.637: WARN/System.err(523):     at org.apache.harmony.xml.ExpatParser.finish(ExpatParser.java:538)
    07-09 12:53:58.637: WARN/System.err(523):     at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:478)
    07-09 12:53:58.637: WARN/System.err(523):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:317)
    07-09 12:53:58.637: WARN/System.err(523):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:273)
    07-09 12:53:58.637: WARN/System.err(523):     at com.mp3player.Mp3ListActivity.parse(Mp3ListActivity.java:117)
    07-09 12:53:58.637: WARN/System.err(523):     at com.mp3player.Mp3ListActivity.updateListView(Mp3ListActivity.java:103)
    07-09 12:53:58.648: WARN/System.err(523):     at com.mp3player.Mp3ListActivity.onCreate(Mp3ListActivity.java:42)
    07-09 12:53:58.648: WARN/System.err(523):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    07-09 12:53:58.648: WARN/System.err(523):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
    07-09 12:53:58.648: WARN/System.err(523):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
    07-09 12:53:58.648: WARN/System.err(523):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
    07-09 12:53:58.648: WARN/System.err(523):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
    07-09 12:53:58.648: WARN/System.err(523):     at android.os.Handler.dispatchMessage(Handler.java:99)
    07-09 12:53:58.648: WARN/System.err(523):     at android.os.Looper.loop(Looper.java:123)
    07-09 12:53:58.648: WARN/System.err(523):     at android.app.ActivityThread.main(ActivityThread.java:4203)
    07-09 12:53:58.659: WARN/System.err(523):     at java.lang.reflect.Method.invokeNative(Native Method)
    07-09 12:53:58.659: WARN/System.err(523):     at java.lang.reflect.Method.invoke(Method.java:521)
    07-09 12:53:58.659: WARN/System.err(523):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    07-09 12:53:58.659: WARN/System.err(523):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    07-09 12:53:58.659: WARN/System.err(523):     at dalvik.system.NativeStart.main(Native Method)
      

  14.   


    时间太久了 我像是xml标签写错了 仔细检查一下标签
      

  15.   

    我也遇到这个问题了,xmlStr有值,xml文件也检查了几遍,还是不行,大家都解决了吗?求大神帮助啊