DOM读XML文件

来源:互联网 发布:淘宝哪家化妆品是正品 编辑:程序博客网 时间:2024/06/05 20:22

方法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;
                            }
                        }
                    }
                }

原创粉丝点击