DOM读XML文件

方法1: 使用字节流的入口方式:

                DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                docBuilderFactory.setValidating(false);
                DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
                ByteArrayInputStream bis = new ByteArrayInputStream(content);
                org.w3c.dom.Document document = docBuilder.parse(bis);
                org.w3c.dom.NodeList rootNodes = document.getChildNodes();

                org.w3c.dom.Node fieldDefineNode = rootNodes.item(0);
                if (fieldDefineNode.getNodeName().equalsIgnoreCase(FIELD_DEFINITION))
                    {
                    org.w3c.dom.NodeList childNodes = fieldDefineNode.getChildNodes();
                    for (int i = 0; i < childNodes.getLength(); i++)
                        {
                        org.w3c.dom.Node childNode = childNodes.item(i);
                        String nodeName = childNode.getNodeName();
                        String nodeText = childNode.getTextContent();
                        if (nodeName.equalsIgnoreCase(RECORDS))
                            {
                            fieldDefine.setRecords(Long.parseLong(nodeText));
                            }
                        else if (nodeName.equalsIgnoreCase(TABLE_SIZE_IN_BYTES))
                            {
                            fieldDefine.setTableSizeInBytes(Long.parseLong(nodeText));
                            }
                        else if (nodeName.equalsIgnoreCase(COLUMN))
                            {
                            org.w3c.dom.Node nameNode = childNode.getAttributes().getNamedItem(NAME);
                            org.w3c.dom.Node typeNode = childNode.getAttributes().getNamedItem(TYPE);
                            String name = nameNode.getNodeValue();
                            int type = Integer.parseInt(typeNode.getNodeValue());
                            fieldDefine.getFields().put(name, new Column(name, type));
                            }
                        }
                    }

 

 

方法二:使用直接文件读取方式:

            File file = new File(filepath);
            FileInputStream fis = new FileInputStream(filepath);
            int length = (int) file.length();
            byte[] buffer = new byte[length];
            fis.read(buffer, 0, length);
            fis.close();

            // XML DOM tree builder to build up for the whole XML tree detector
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            docBuilderFactory.setValidating(false);
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
            org.w3c.dom.Document document = docBuilder.parse(bis);
            org.w3c.dom.NodeList rootNodes = document.getChildNodes();
            org.w3c.dom.Node configNode = rootNodes.item(0);
            if (configNode.getNodeName().equalsIgnoreCase(CONFIGURATION))
                {
                org.w3c.dom.NodeList childNodes = configNode.getChildNodes();
                for (int i = 0; i < childNodes.getLength(); i++)
                    {
                    org.w3c.dom.Node propertyNode = childNodes.item(i);
                    String propertyName = propertyNode.getNodeName();
                    String propertyValue = propertyNode.getTextContent();
                    if (propertyName.equalsIgnoreCase(PROPERTY))
                        {
                        // property getting operation for the whole operation
                        org.w3c.dom.Node nameNode = propertyNode.getAttributes().getNamedItem(NAME);
                        String nameValue = nameNode.getNodeValue();
                        if (nameValue.equalsIgnoreCase(INDEXPATH))
                            {
                            this.indexDir = propertyValue;
                            }
                        }
                    }
                }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值