想解析xml文件,但是这个xml内容的格式是不固定的,应该怎样解析?

malegebicaonima 2010-03-18 10:15:10
rt。。最好能贴上点代码!!!谢谢!
...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordinhand 2010-03-18
  • 打赏
  • 举报
回复
用jdom或者dom4j,根据名字获取节点后,先判断node为不为空
  • 打赏
  • 举报
回复
格式不定?那有没有约束的 DTD 或者 Schema 呢?如果有的话还是能解析的,否则无法解析。
老张吃嫩草 2010-03-18
  • 打赏
  • 举报
回复
格式都没固定,那就用N多种解析方法了!方法根本确定不下来!!!
iliuweijava 2010-03-18
  • 打赏
  • 举报
回复
看看DOM4J吧,XML文件就那么个格式,节点不固定不是问题
nie198995jk 2010-03-18
  • 打赏
  • 举报
回复
解析有两种一种是dom和sax~~通过节点去解析~
河里的树木 2010-03-18
  • 打赏
  • 举报
回复
public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
throws SAXException {
tagsStatck.push(qName);

// 如果新的标签是“学生”,则表示接下来要读取学生。这里之所以需要bean为空,是因为放置学生标签的子标签也有“学生”
if (bean == null) {
if (qName.equals("学生")){
System.out.println("------Processing a student--------");
bean = new StudentBean();
bean.setGender(atts.getValue("性别"));
}
}
}

/**
* 在遇到结束标签的时候,调用这个方法
*/
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
// 将最近读取的标签弹出
String currenttag = (String)tagsStatck.pop();
// 最近读到的标签应该与即将关闭的标签一样。
if (!currenttag.equals(qName)){
throw new SAXException("XML文档格式不正确,标签不匹配!");
}
// 如果关闭的是"学生"标签,则表示一个StudentBean已经构造完毕了。
if (qName.equals("学生")){
System.out.println("------Processing a student end--------");
// 将bean实例放入学生列表中,同时置空,等待构造下一个实例
studentBeans.add(bean);
bean = null;
}
}

/**
* 处理在XML文件中读到字符串
* @see org.xml.sax.ContentHandler#characters(char[], int, int)
*/
public void characters(char[] chs, int start, int length) throws SAXException {
// 从栈中得到当前节点的信息
String tag = (String) tagsStatck.peek();
String value = new String(chs, start, length);

if (tag.equals("姓名")){
// 如果最近读到的标签是姓名,则把字符串当作姓名的值
bean.setName(value);
} else if (tag.equals("年龄")){
bean.setAge(Integer.parseInt(value));
} else if (tag.equals("电话")){
bean.setPhone(value);
}
}
nnbbbbbbbbbb 2010-03-18
  • 打赏
  • 举报
回复
是节点不定还是属性不定或者多不定。
取的根节点后,在判断下面的节点是否有根节点,做递归处理。
河里的树木 2010-03-18
  • 打赏
  • 举报
回复
用SAX解析啊,它可以解析不确定的xml文件。
岁月之梦 2010-03-18
  • 打赏
  • 举报
回复
判断解析啊!
BearKin 2010-03-18
  • 打赏
  • 举报
回复
通过if...else..可以解决任何不是固定的问题 不过最好别这样做哦
orangemike 2010-03-18
  • 打赏
  • 举报
回复
你不说清楚,别人怎么回答?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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