解析XML出错了

angel725 2010-09-01 07:32:39
先看代码:
xmlMain.java
package com.android.xml;

import java.io.StringReader;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import com.android.tool.MyContentHandler;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class xmlMain extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button read_btn =(Button)findViewById(R.id.read);
read_btn.setOnClickListener(new read_btn_lin());
}

private class read_btn_lin implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

StringReader sr=new StringReader("./assets/Workers.xml");
InputSource is=new InputSource(sr);
try{
SAXParserFactory factory=SAXParserFactory.newInstance();
XMLReader reader=factory.newSAXParser().getXMLReader();
reader.setContentHandler(new MyContentHandler());
reader.parse(is);
}catch(Exception e){
e.printStackTrace();
}

}

}
}


MyContentHandler.java

package com.android.tool;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MyContentHandler extends DefaultHandler {

private String id, name, sex, tag;

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
}

@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
System.out.println("---End---");
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
}

@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
//super.startDocument();
System.out.println("---Begin---");
}

@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
tag = localName;
if (localName.equals("worker")) {
for (int i = 0; i < attributes.getLength(); i++) {
System.out.println(attributes.getLocalName(i)
+ attributes.getValue(i));
}
}
}

}


错误(但LOG里输出的是W,,是警告信息:
08-31 17:55:03.594: WARN/System.err(345): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 1: not well-formed (invalid token)


System.out输出也有有startDocument()这里的"---begin---"就没了。

是什么原因
...全文
1425 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
andyzhchy 2011-07-15
  • 打赏
  • 举报
回复
字符编码问题
wshlnn 2011-02-16
  • 打赏
  • 举报
回复
android不能访问本地磁盘的内容,应该放到sdcard中进行访问
angel725 2010-09-04
  • 打赏
  • 举报
回复
手机资源有限,不想转码。

win记事本中“另存为”中有utf8格式,
可是放到程序里还是不行啊

要怎么建utf8啊。
archko 2010-09-03
  • 打赏
  • 举报
回复
你建的都是GBK文件,Java要转码,不然直接建UTF-8文件
angel725 2010-09-03
  • 打赏
  • 举报
回复
我用FileinputStream,inputstreamreader.等打开"./assets/Workers.xml“
都是java.io.FileNotFoundException

但写在java里都正常。
yyy025025025 2010-09-02
  • 打赏
  • 举报
回复
在解析中打log吧,在解析的一开始就挂掉了。

StringReader sr=new StringReader("./assets/Workers.xml");

貌似这句不是打开具体的文件,而是创建了一个叫做./assets/Workers.xml的字符串。

尝试用inputstream来打开文件吧。
angel725 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 coxfilur_2008 的回复:]
care
[/Quote]

什么 care ?????????
coxfilur_2008 2010-09-02
  • 打赏
  • 举报
回复
care
archko 2010-09-02
  • 打赏
  • 举报
回复
无法解析.有可能是编码的问题.你的XML文件不行.
angel725 2010-09-02
  • 打赏
  • 举报
回复
我新建了两个文:都是右建

new-file-然后起个名XX.xml
还有
new-other-xml-xml.

都不行。


还有一个android工程里有一个android XML File .我不太会用,试着建了一个,然后删除原来的,把我的copy上去。。


这三个建的xml。。运行,都是同样错误。
haoyizsw 2010-09-02
  • 打赏
  • 举报
回复
换个文件试试
dinjay 2010-09-02
  • 打赏
  • 举报
回复
你在工程中建立个空的xml文件,然后把你的内容cpy到上面,估计是你xml文件的编码格式不对。
angel725 2010-09-02
  • 打赏
  • 举报
回复
我用3楼给的pull例子中的xml
<?xml version="1.0" encoding="UTF-8"?>   
<persons>
<person id="23">
<name>李明</name>
<age>30</age>
</person>
<person id="20">
<name>李向梅</name>
<age>25</age>
</person>
</persons>


也是不行,,

只是输出begin那句。
还有这个警告:WARN/System.err(345): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 1: not well-formed (invalid token)


怎么回事????
Nico 2010-09-02
  • 打赏
  • 举报
回复
XML文件问题!
ameyume 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 angel725 的回复:]
引用 1 楼 yetaodiao 的回复:
用自带的pull试试

pull??什么,不明白,
[/Quote]
在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。
pull是android自带的一种xml解析器。

pull解析xml示例
http://tdq222.javaeye.com/blog/702114
angel725 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yetaodiao 的回复:]
用自带的pull试试
[/Quote]
pull??什么,不明白,
  • 打赏
  • 举报
回复
用自带的pull试试

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧