xml文件如下:
<?xml version="1.0" encoding="GB2312"?>
<学生花名册>
<学生 性别 = "男">
<姓名>gray</姓名>
<年龄>14</年龄>
<电话>1234567</电话>
</学生>
</学生花名册>
我想实现的是,判断根节点的内容是否为 “学生花名册”,如果是,才对整个xml文档进行解析,否则不进行解析。希望用w3c的那种解析方法实现,请教各位大神了~~
xml文件如下:
<?xml version="1.0" encoding="GB2312"?>
<学生花名册>
<学生 性别 = "男">
<姓名>gray</姓名>
<年龄>14</年龄>
<电话>1234567</电话>
</学生>
</学生花名册>
我想实现的是,判断根节点的内容是否为 “学生花名册”,如果是,才对整个xml文档进行解析,否则不进行解析。希望用w3c的那种解析方法实现,请教各位大神了~~
1 w3c dom解析
[code="java"] //DOM解析
//1 DocumentBuilder工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2 DocumentBuilder
DocumentBuilder db = dbf.newDocumentBuilder();
//3 解析
File f = new File("文件位置");
Document document = db.parse(f);
document.normalize();
document.normalizeDocument();
//4 取数据
Element rootElement = document.getDocumentElement();
if(!"学生花名册".equals(rootElement.getTagName())) {
System.out.println("退出");
}
//继续解析
[/code]
2、sax解析
[code="java"]
public class StudentHandler extends DefaultHandler {
private boolean canParse = true;
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if("学生花名册".equals(qName)) {
canParse = false;
}
if(!canParse) {
System.out.println("退出");
return;
}
//继续解析
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if(!canParse) {
return;
}
//继续解析
}
//清理
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if(!canParse) {
return;
}
//继续解析
}
}
[/code]
[code="java"]
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
File f = new File("文件位置");
StudentHandler u = new StudentHandler();
sp.parse(f, u);
[/code]