问题:xmlReader.parse(new InputSource(new StringReader(xmlStr))); 这行代码为什么执行不了?
理由:System.out.println("xml------------");放在上行代码前能打印出来,放到之后就打印不出来,并且log里面提醒的也是这行代码!全部代码如下:
package your.napo;import java.io.StringReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import javax.xml.parsers.SAXParserFactory;import napo.download.HttpDownload;
import napo.model.Mp3Info;
import napo.xml.Mp3ListContentHandler;import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;public class Mp3player extends ListActivity {
    /** Called when the activity is first created. */

private static final int UPDATE = 1;
private static final int ABOUT = 2;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, UPDATE, 1, R.string.mp3list_update);
menu.add(0, ABOUT, 2, R.string.mp3list_about);
return super.onCreateOptionsMenu(menu); 
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == UPDATE) {
String xml = downloadXML("http://192.168.1.2:8080/mp3/resources.xml");
parse(xml);

}
else if(item.getItemId() == ABOUT) {

}
return super.onOptionsItemSelected(item);
}
    
    private String downloadXML(String urlStr) {
     HttpDownload httpDownload = new HttpDownload();
     String result = httpDownload.download(urlStr);
     return result;
    }
    
    private List<Mp3Info> parse(String xmlStr) {
     SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
List<Mp3Info> infos = new ArrayList<Mp3Info>();
     try {
     XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
     Mp3ListContentHandler mp3ListContentHandler = new Mp3ListContentHandler(infos);
     xmlReader.setContentHandler(mp3ListContentHandler); 
     System.out.println("xml------------");
     xmlReader.parse(new InputSource(new StringReader(xmlStr)));
    
     for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();

System.out.println(mp3Info);
}
     } catch(Exception e) {
     e.printStackTrace();
     }
     return infos;
    }
}Log如下:05-23 06:43:08.289: W/System.err(1102): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 377: mismatched tag
05-23 06:43:08.289: W/System.err(1102):  at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:507)
05-23 06:43:08.298: W/System.err(1102):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:492)
05-23 06:43:08.298: W/System.err(1102):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:308)
05-23 06:43:08.298: W/System.err(1102):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:264)
05-23 06:43:08.298: W/System.err(1102):  at your.napo.Mp3player.parse(Mp3player.java:68)
05-23 06:43:08.298: W/System.err(1102):  at your.napo.Mp3player.onOptionsItemSelected(Mp3player.java:45)
05-23 06:43:08.298: W/System.err(1102):  at android.app.Activity.onMenuItemSelected(Activity.java:2195)
05-23 06:43:08.298: W/System.err(1102):  at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
05-23 06:43:08.298: W/System.err(1102):  at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
05-23 06:43:08.309: W/System.err(1102):  at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
05-23 06:43:08.309: W/System.err(1102):  at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
05-23 06:43:08.309: W/System.err(1102):  at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
05-23 06:43:08.309: W/System.err(1102):  at android.view.View$PerformClick.run(View.java:8816)
05-23 06:43:08.309: W/System.err(1102):  at android.os.Handler.handleCallback(Handler.java:587)
05-23 06:43:08.309: W/System.err(1102):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-23 06:43:08.319: W/System.err(1102):  at android.os.Looper.loop(Looper.java:123)
05-23 06:43:08.319: W/System.err(1102):  at android.app.ActivityThread.main(ActivityThread.java:4627)
05-23 06:43:08.319: W/System.err(1102):  at java.lang.reflect.Method.invokeNative(Native Method)
05-23 06:43:08.319: W/System.err(1102):  at java.lang.reflect.Method.invoke(Method.java:521)
05-23 06:43:08.319: W/System.err(1102):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-23 06:43:08.329: W/System.err(1102):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-23 06:43:08.329: W/System.err(1102):  at dalvik.system.NativeStart.main(Native Method)
05-23 06:43:08.369: W/InputManagerService(68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44f17018
05-23 06:45:03.119: D/dalvikvm(128): GC_FOR_MALLOC freed 12929 objects / 574056 bytes in 1067ms
05-23 06:45:16.269: D/SntpClient(68): request time failed: java.net.SocketException: Address family not supported by protocol

解决方案 »

  1.   

    mismatched tagXML文件缺少标识,打开这个文件看一下是不是缺少了结束标记之类的。
      

  2.   

    xml文件是这样的,没错吧?
    <?xml version="1.0" encoding="ISO-8859-1"?><resoutces>
    <resource>
    <id>0001</id>
    <mp3.name>aaa1.mp3</mp3.name>
    <mp3.size>3,506,576</mp3.size>
    <krc.name>aaa1.krc</krc.name>
    <krc.size>3,211</krc.size>
    </resource>
    <resource>
    <id>0002</id>
    <mp3.name>aaa2.mp3</mp3.name>
    <mp3.size>3,530,240</mp3.size>
    <krc.name>aaa2.krc</krc.name>
    <krc.size>2,710</krc.size>
    </resource>
    </resources>
      

  3.   

    不是定义了Mp3ListContentHandler 么,进去看看里面解析的过程中是到哪儿错了。
      

  4.   

    找不到错在那啊?
    package napo.xml;import java.util.List;import napo.model.Mp3Info;import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;public class Mp3ListContentHandler extends DefaultHandler{
    private List<Mp3Info> infos = null;
    private Mp3Info mp3Info = null;
    private String tagName = null;


    public Mp3ListContentHandler(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("krc.name")) {
    mp3Info.setKrcName(temp);
    }
    else if(tagName.equals("krc.size")) {
    mp3Info.setKrcSize(temp);
    }
    } @Override
    public void endDocument() throws SAXException {

    } @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    if(qName.equals("resource")) {
    infos.add(mp3Info);
    }
    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();
    }
    }

    }
      

  5.   

    xml文件错误了,一个字母之错 <resoutces>
    </resources>
      

  6.   

    晕啊,上帝啊,谢谢了! 我太粗心了,我竟然没看到了,还用WinMerge去对比了代码,这个xml比较短就没去对比,哎~ 以后要细心啊,记住了!!
      

  7.   

    我的也出现类似问题,但是没有写错xml,为何请教
      

  8.   

    11-28 07:32:32.409: D/AndroidRuntime(402): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    11-28 07:32:32.409: D/AndroidRuntime(402): CheckJNI is ON
    11-28 07:32:33.063: D/AndroidRuntime(402): --- registering native functions ---
    11-28 07:32:35.679: D/dalvikvm(184): GC_EXPLICIT freed 79 objects / 3848 bytes in 348ms
    11-28 07:32:35.940: D/PackageParser(81): Scanning package: /data/app/vmdl27080.tmp
    11-28 07:32:36.911: D/dalvikvm(81): GC_FOR_MALLOC freed 9755 objects / 517776 bytes in 542ms
    11-28 07:32:37.629: I/PackageManager(81): Removing non-system package:com.mp3
    11-28 07:32:37.639: I/ActivityManager(81): Force stopping package com.mp3 uid=10033
    11-28 07:32:37.780: I/Process(81): Sending signal. PID: 393 SIG: 9
    11-28 07:32:38.079: I/UsageStats(81): Unexpected resume of mars.mp3player while already resumed in com.mp3
    11-28 07:32:38.219: I/WindowManager(81): WIN DEATH: Window{451c2390 com.mp3/com.mp3.MainActivity paused=false}
    11-28 07:32:38.519: W/InputManagerService(81): Got RemoteException sending setActive(false) notification to pid 393 uid 10033
    11-28 07:32:39.100: D/PackageManager(81): Scanning package com.mp3
    11-28 07:32:39.109: I/PackageManager(81): Package com.mp3 codePath changed from /data/app/com.mp3-1.apk to /data/app/com.mp3-2.apk; Retaining data and using new
    11-28 07:32:39.119: I/PackageManager(81): /data/app/com.mp3-2.apk changed; unpacking
    11-28 07:32:39.149: D/installd(34): DexInv: --- BEGIN '/data/app/com.mp3-2.apk' ---
    11-28 07:32:41.679: D/dalvikvm(410): DexOpt: load 244ms, verify 1658ms, opt 65ms
    11-28 07:32:41.739: D/installd(34): DexInv: --- END '/data/app/com.mp3-2.apk' (success) ---
    11-28 07:32:41.749: W/PackageManager(81): Code path for pkg : com.mp3 changing from /data/app/com.mp3-1.apk to /data/app/com.mp3-2.apk
    11-28 07:32:41.749: W/PackageManager(81): Resource path for pkg : com.mp3 changing from /data/app/com.mp3-1.apk to /data/app/com.mp3-2.apk
    11-28 07:32:41.769: I/ActivityManager(81): Force stopping package com.mp3 uid=10033
    11-28 07:32:41.809: D/PackageManager(81):   Activities: com.mp3.MainActivity
    11-28 07:32:42.319: I/installd(34): move /data/dalvik-cache/data@[email protected]@classes.dex -> /data/dalvik-cache/data@[email protected]@classes.dex
    11-28 07:32:42.319: D/PackageManager(81): New package installed in /data/app/com.mp3-2.apk
    11-28 07:32:42.730: I/ActivityManager(81): Force stopping package com.mp3 uid=10033
    11-28 07:32:43.139: D/dalvikvm(81): GC_EXPLICIT freed 4824 objects / 326856 bytes in 382ms
    11-28 07:32:43.919: W/RecognitionManagerService(81): no available voice recognition services found
    11-28 07:32:44.189: D/dalvikvm(202): GC_EXPLICIT freed 532 objects / 29256 bytes in 955ms
    11-28 07:32:44.581: D/dalvikvm(81): GC_EXPLICIT freed 2907 objects / 169656 bytes in 429ms
    11-28 07:32:44.829: I/installd(34): unlink /data/dalvik-cache/data@[email protected]@classes.dex
    11-28 07:32:44.880: D/AndroidRuntime(402): Shutting down VM
    11-28 07:32:44.889: D/dalvikvm(402): Debugger has detached; object registry had 1 entries
    11-28 07:32:44.929: I/AndroidRuntime(402): NOTE: attach of thread 'Binder Thread #3' failed
    11-28 07:32:45.510: D/dalvikvm(215): GC_EXPLICIT freed 7816 objects / 387688 bytes in 2146ms
    11-28 07:32:45.779: D/AndroidRuntime(415): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    11-28 07:32:45.779: D/AndroidRuntime(415): CheckJNI is ON
    11-28 07:32:46.039: D/AndroidRuntime(415): --- registering native functions ---
    11-28 07:32:47.049: I/ActivityManager(81): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.mp3/.MainActivity }
    11-28 07:32:47.149: I/ActivityManager(81): Start proc com.mp3 for activity com.mp3/.MainActivity: pid=421 uid=10033 gids={3003}
    11-28 07:32:47.149: D/AndroidRuntime(415): Shutting down VM
    11-28 07:32:47.159: D/dalvikvm(415): Debugger has detached; object registry had 1 entries
    11-28 07:32:47.179: I/AndroidRuntime(415): NOTE: attach of thread 'Binder Thread #3' failed
    11-28 07:32:47.469: D/dalvikvm(32): GC_EXPLICIT freed 293 objects / 11216 bytes in 286ms
    11-28 07:32:47.759: D/dalvikvm(32): GC_EXPLICIT freed 47 objects / 2072 bytes in 271ms
    11-28 07:32:48.330: D/dalvikvm(32): GC_EXPLICIT freed 2 objects / 64 bytes in 570ms
    11-28 07:32:48.969: I/ActivityManager(81): Displayed activity com.mp3/.MainActivity: 1846 ms (total 1846 ms)
    11-28 07:32:49.479: W/InputManagerService(81): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@44ee4608 (uid=10032 pid=365)
    11-28 07:32:54.391: D/dalvikvm(184): GC_EXPLICIT freed 91 objects / 7864 bytes in 248ms
    11-28 07:32:59.510: D/dalvikvm(332): GC_EXPLICIT freed 287 objects / 13696 bytes in 365ms
    11-28 07:33:01.999: W/KeyCharacterMap(421): No keyboard for id 0
    11-28 07:33:01.999: W/KeyCharacterMap(421): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-28 07:33:04.561: I/global(421): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    11-28 07:33:04.611: I/System.out(421): aaa
    11-28 07:33:04.640: I/System.out(421): --------
    11-28 07:33:04.652: I/System.out(421): --------
    11-28 07:33:04.660: I/System.out(421): --------
    11-28 07:33:04.683: I/System.out(421): --------
    11-28 07:33:04.700: I/System.out(421): --------
    11-28 07:33:04.700: I/System.out(421): --------
    11-28 07:33:04.715: I/System.out(421): --------
    11-28 07:33:04.715: I/System.out(421): --------
    11-28 07:33:04.720: I/System.out(421): bbbbb
    11-28 07:33:04.720: I/System.out(421): ccccc
    11-28 07:33:04.730: I/System.out(421): --------
    11-28 07:33:04.730: I/System.out(421): --------
    11-28 07:33:04.740: I/System.out(421): --------
    11-28 07:33:04.740: I/System.out(421): --------
    11-28 07:33:04.740: I/System.out(421): --------
    11-28 07:33:04.740: I/System.out(421): --------
    11-28 07:33:04.751: I/System.out(421): --------
    11-28 07:33:04.751: I/System.out(421): --------
    11-28 07:33:04.751: I/System.out(421): bbbbb
    11-28 07:33:04.751: I/System.out(421): ccccc
    11-28 07:33:04.760: W/System.err(421): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 425: no element found
    11-28 07:33:04.770: W/System.err(421):  at org.apache.harmony.xml.ExpatParser.finish(ExpatParser.java:553)
    11-28 07:33:04.770: W/System.err(421):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:493)
    11-28 07:33:04.770: W/System.err(421):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:308)
    11-28 07:33:04.780: W/System.err(421):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:264)
    11-28 07:33:04.780: W/System.err(421):  at com.mp3.MainActivity.parse(MainActivity.java:72)
    11-28 07:33:04.780: W/System.err(421):  at com.mp3.MainActivity.onOptionsItemSelected(MainActivity.java:47)
    11-28 07:33:04.790: W/System.err(421):  at android.app.Activity.onMenuItemSelected(Activity.java:2195)
    11-28 07:33:04.790: W/System.err(421):  at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
    11-28 07:33:04.790: W/System.err(421):  at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
    11-28 07:33:04.790: W/System.err(421):  at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
    11-28 07:33:04.790: W/System.err(421):  at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
    11-28 07:33:04.790: W/System.err(421):  at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
    11-28 07:33:04.800: W/System.err(421):  at android.view.View$PerformClick.run(View.java:8816)
    11-28 07:33:04.800: W/System.err(421):  at android.os.Handler.handleCallback(Handler.java:587)
    11-28 07:33:04.800: W/System.err(421):  at android.os.Handler.dispatchMessage(Handler.java:92)
    11-28 07:33:04.800: W/System.err(421):  at android.os.Looper.loop(Looper.java:123)
    11-28 07:33:04.810: W/System.err(421):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    11-28 07:33:04.810: W/System.err(421):  at java.lang.reflect.Method.invokeNative(Native Method)
    11-28 07:33:04.810: W/System.err(421):  at java.lang.reflect.Method.invoke(Method.java:521)
    11-28 07:33:04.840: W/System.err(421):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    11-28 07:33:04.840: W/System.err(421):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    11-28 07:33:04.840: W/System.err(421):  at dalvik.system.NativeStart.main(Native Method)
    11-28 07:33:04.970: W/InputManagerService(81): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44edfd38
    11-28 07:33:08.460: D/dalvikvm(365): GC_EXPLICIT freed 617 objects / 28296 bytes in 431ms
      

  9.   

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