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

报告相同问题?

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了