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条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能