当前位置:编程学习 > JAVA >>

如何解析这样的XML文件---菜鸟求助

<city name=beijing mnv=014 cyh=421 date="MM-DD-YY" time=12/>
<city name=shanghai mnv=024 cyh=011 date="MM-DD-YY" time=24/>
<city name=hena mnv=014 cyh=421 date="MM-DD-YY" time=12/>

..............................

因为是在安卓设备中,所以应该用PULL解析吧。
肯定要定义一个City的属性类。用来封装这些信息。
关键是如何解析是这个XML呢?这个返回值要是一个List或者Map集合,因为后面要获取到mnv和chy的值和其他地获取的值进行比较。
try {

//定义工厂 XmlPullParserFactory
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

//定义解析器 XmlPullParser
XmlPullParser parser = factory.newPullParser();

//获取xml输入数据
parser.setInput(inputstream);

//开始解析事件
int eventType = parser.getEventType();



下面该 怎么写?????? --------------------编程问答-------------------- 整个xml发上来,另外这个xml书写的也不规范。 --------------------编程问答-------------------- 文档的root节点吃掉了? --------------------编程问答--------------------
引用 1 楼 evangelionxb 的回复:
整个xml发上来,另外这个xml书写的也不规范。


里面就这几行啊。 --------------------编程问答--------------------
引用 2 楼 huntor 的回复:
文档的root节点吃掉了?



没有root节点。
定义一个default.xml 里面的内容是:
<city name=beijing mnv=014 cyh=421 date="MM-DD-YY" time=12/>
<city name=shanghai mnv=024 cyh=011 date="MM-DD-YY" time=24/>
<city name=hena mnv=014 cyh=421 date="MM-DD-YY" time=12/>


现在就想怎么把他们解析出来。弄了好久  --------------------编程问答-------------------- 你的也不xml的格式啊。有这个吗  <?xml version="1.0" encoding="UTF-8"?> --------------------编程问答--------------------
引用 5 楼 rui888 的回复:
你的也不xml的格式啊。有这个吗  <?xml version="1.0" encoding="UTF-8"?>

 
没有这个,所以不是标准的XML文件。只是作为数据存储的媒介啊。所以我代码写不下去了。来请教大神 --------------------编程问答-------------------- 还是用正则来解析吧


public class CityReader {

private List<City> list = new ArrayList<City>();

public void read(){

FileInputStream fis = null;
try {
fis = new FileInputStream("src/city.xml");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader br = new BufferedReader(new InputStreamReader(fis));


// <city name=beijing mnv=014 cyh=421 date="MM-DD-YY" time=12/>
String regex = "mnv=[\\w]*";


try {
while(br.ready()){

String line = br.readLine();
Pattern pat = Pattern.compile(regex);
Matcher mat = pat.matcher(line);
boolean flag = mat.find();
System.out.println(mat.group().substring(4,mat.group().length()));

}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void main(String[] args) {

CityReader reader = new CityReader();
reader.read();

}

}


补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,