如何解析这样的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节点吃掉了? --------------------编程问答--------------------
里面就这几行啊。 --------------------编程问答--------------------
没有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"?> --------------------编程问答--------------------
没有这个,所以不是标准的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