grayqian 2013-04-22 00:37 采纳率: 0%
浏览 324
已采纳

DOM解析XML,根节点标签内容判断

xml文件如下:

<?xml version="1.0" encoding="GB2312"?>

<学生花名册>

<学生 性别 = "男">

<姓名>gray</姓名>

<年龄>14</年龄>

<电话>1234567</电话>

</学生>

</学生花名册>

我想实现的是,判断根节点的内容是否为 “学生花名册”,如果是,才对整个xml文档进行解析,否则不进行解析。希望用w3c的那种解析方法实现,请教各位大神了~~

  • 写回答

3条回答 默认 最新

  • jinnianshilongnian 2013-04-22 07:31
    关注

    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]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?