DOM 解析器 使用

根据需求xml 创建一个结点以及文件。

public int onCreateEap() {

        try {

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = db.parse(new File(FILE_PATH));

            Element eapElement = document.createElement("eap");
            eapElement.setAttribute("active", "1");
            eapElement.setAttribute("options", "8");
            eapElement.setAttribute("strict", "0");

            Element provisioningElement = (Element) document
                    .getElementsByTagName("provisioning").item(0);
            provisioningElement.appendChild(eapElement);

            Element certificateElement = document
                    .createElement("root-certificate");
            certificateElement.setAttribute("encoding", "pem");

            Element neweapElement = (Element) document.getElementsByTagName(
                    "eap").item(0);

            Log.d("jcmtest", "readFileData********1");

            neweapElement.appendChild(certificateElement);

            Element naiElement = document.createElement("nai");
            neweapElement.insertBefore(naiElement, certificateElement);

            Element newnaiElement = (Element) document.getElementsByTagName(
                    "nai").item(0);

            Log.d("jcmtest", "readFileData********2");
            Element prefixElement = document.createElement("prefix");
            newnaiElement.appendChild(prefixElement);

            Element realmElement = document.createElement("realm");
            newnaiElement.insertBefore(realmElement, prefixElement);

            Element usernameElement = document.createElement("username");
            newnaiElement.insertBefore(usernameElement, realmElement);

            Element ttlsElement = document.createElement("ttls");
            ttlsElement.setAttribute("active", "1");
            neweapElement.insertBefore(ttlsElement, certificateElement);
            Log.d("jcmtest", "readFileData********3");
            Element outerNaiTypemElement = document
                    .createElement("outerNaiType");
            ttlsElement.appendChild(outerNaiTypemElement);

            Element passwordeElement = document.createElement("password");
            ttlsElement.insertBefore(passwordeElement, outerNaiTypemElement);

            Element typeeElement = document.createElement("type");
            ttlsElement.insertBefore(typeeElement, passwordeElement);

            TransformerFactory transformerFactory = TransformerFactory
                    .newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);
            transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING);
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
            Log.d("jcmtest", "readFileData********4");
            File file = new File(FILE_PATH);
            FileOutputStream out = new FileOutputStream(file);
            StreamResult xmlResult = new StreamResult(out);
            transformer.transform(domSource, xmlResult);
            Log.d("jcmtest", "readFileData********5");
        } catch (Exception ex) {
            System.out.println(ex.getMessage());

            Log.d("jcmtest", "readFileData********6");
            return -1;
        }

        return 0;

    }

根据xml 中的结点数据信息去删除某个结点信息


    public int onDeleChannel(Intent intent, int flag) {
        try {

            int lenth = 0;
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = db.parse(new File(FILE_PATH));
            Element ndssElement = (Element) document.getElementsByTagName(
                    "ndss").item(0);
            Element root = document.getDocumentElement();
            NodeList nodes = root.getElementsByTagName("ndss");
            for (int i = 0; i < nodes.getLength(); i++) {
                Element channelElement = (Element) (nodes.item(i));
                int oldlenth = channelElement.getElementsByTagName("channel")
                        .getLength();
                lenth = oldlenth;

                ArrayList<String> infoList = new ArrayList<String>();

                infoList = intent.getStringArrayListExtra("position");

                for (String temp : infoList) {
                    for (int i1 = 0; i1 < lenth; i1++) {

                        Element channelData = (Element) channelElement
                                .getElementsByTagName("channel").item(i1);
                        if (intent != null) {

                            if (temp.equals(channelData.getAttribute("id"))) {
                                ndssElement.removeChild(channelData);

                            }
                        }
                        int currentLenth = channelElement.getElementsByTagName(
                                "channel").getLength();
                        lenth = currentLenth;
                    }
                }
            }
            TransformerFactory transformerFactory = TransformerFactory
                    .newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);
            // 设置编码类型
            transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING);
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
            File file = new File(FILE_PATH);
            FileOutputStream out = new FileOutputStream(file);
            StreamResult xmlResult = new StreamResult(out);
            transformer.transform(domSource, xmlResult);
            out.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());

        } finally {
            this.stopSelf();
            Log.d("jcmtest", "delete .......finished");
        }

        return 0;
    }

增加结点信息。

    public int onaddChannel(Intent intent) {

        try {

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = db.parse(new File(FILE_PATH));

            Element channelElement = document.createElement("channel");
            channelElement.setAttribute("id", intent.getExtra("index", 00)
                    .toString());
            channelElement.setAttribute("bandwidth",
                    intent.getExtra("bandwidth", "00").toString());
            channelElement.setAttribute("fft", "1024");
            channelElement.setAttribute("frequency",
                    intent.getExtra("frequency", "00").toString());
            Element ndssElement = (Element) document.getElementsByTagName(
                    "ndss").item(0);
            ndssElement.appendChild(channelElement);

            TransformerFactory transformerFactory = TransformerFactory
                    .newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);
            // 设置编码类型
            transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING);
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
            File file = new File(FILE_PATH);
            FileOutputStream out = new FileOutputStream(file);
            StreamResult xmlResult = new StreamResult(out);
            transformer.transform(domSource, xmlResult);
            out.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());

        } finally {
            this.stopSelf();
        }

        return 0;
    }


修改结点信息


    private List<Channel> onChangeAuthentication(Intent intent) {
        // TODO Auto-generated method stub
        Log.d("jcmtest", "onChangeAuthentication");
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = db.parse(new File(FILE_PATH));
            int eapLenth = document.getElementsByTagName("eap").getLength();
            if (eapLenth == 0 || eapLenth < 0) {
                if (onCreateEap() < 0) {
                    Log.d("jcmtest", "===create node error!!!!!!!!!!!!");
                }
            }
            Element prefixelement = (Element) document.getElementsByTagName("prefix").item(0);
            prefixelement.setTextContent(intent.getStringExtra("prefix"));

            Element realmelement = (Element) document.getElementsByTagName("realm").item(0);
            realmelement.setTextContent(intent.getStringExtra("realm"));

            Element usernameelement = (Element) document.getElementsByTagName("username").item(0);
            usernameelement.setTextContent(intent.getStringExtra("username"));

            Element outerNaiTypelement = (Element) document    .getElementsByTagName("outerNaiType").item(0);
            outerNaiTypelement.setTextContent(intent.getStringExtra("outerNaiType"));

            Element passwordelement = (Element) document.getElementsByTagName("password").item(0);
            passwordelement.setTextContent(intent.getStringExtra("passwordelement"));

            Element eapelement = (Element) (Element) document
                    .getElementsByTagName("eap").item(0);
            Element ttlselement = (Element) (Element) document
                    .getElementsByTagName("ttls").item(0);
            if ("Disable".equals(intent.getStringExtra("authentype"))){
                eapelement.setAttribute("active", "0");
            }else if ("TLS".equals(intent.getStringExtra("authentype"))) {
                eapelement.setAttribute("active", "1");
                ttlselement.setAttribute("active", "0");
            } if ("TTLS".equals(intent.getStringExtra("authentype"))) {
                eapelement.setAttribute("active", "1");
                ttlselement.setAttribute("active", "1");
            }
            if (intent.getStringExtra("certificationpath") != null) {
                if ("root".equals(intent.getStringExtra("certificate"))) {
                    Element certificateElement = (Element) document
                            .getElementsByTagName("root-certificate").item(0);
                    if (certificateElement==null){
                        certificateElement = document
                                .createElement("root-certificate");
                        certificateElement.setAttribute("encoding", "pem");
                        eapelement.insertBefore(certificateElement, eapelement.getElementsByTagName("nai").item(0));
                    }
                    certificateElement.setTextContent(readFileData(intent
                                .getStringExtra("certificationpath")));
                }else if ("user".equals(intent.getStringExtra("certificate"))){
                    Element certificateElement = (Element) document
                            .getElementsByTagName("user-certificate").item(0);
                    if (certificateElement==null){
                        certificateElement = document
                                .createElement("user-certificate");
                        certificateElement.setAttribute("encoding", "pem");
                        eapelement.insertBefore(certificateElement, eapelement.getElementsByTagName("nai").item(0));
                    }
                    certificateElement.setTextContent(readFileData(intent
                                .getStringExtra("certificationpath")));
                }else if ("userkey".equals(intent.getStringExtra("certificate"))){
                    Element certificateElement = (Element) document
                            .getElementsByTagName("userkey-certificate").item(0);
                    if (certificateElement==null){
                        certificateElement = document
                                .createElement("userkey-certificate");
                        certificateElement.setAttribute("encoding", "pem");
                        eapelement.insertBefore(certificateElement, eapelement.getElementsByTagName("nai").item(0));
                    }
                    certificateElement.setTextContent(readFileData(intent
                                .getStringExtra("certificationpath")));
                }
            }


            TransformerFactory transformerFactory = TransformerFactory
                    .newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);

            transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING);
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
            File file = new File(FILE_PATH);
            FileOutputStream out = new FileOutputStream(file);
            
            StreamResult xmlResult = new StreamResult(out);
            transformer.transform(domSource, xmlResult);
            Log.d("jcmtest", "the node is exist ?===*************4****");
            out.close();
        } catch (Exception ex) {
//            System.out.println(ex.getMessage());
            ex.printStackTrace();
            Log.d("jcmtest", "ex.getMessage() = "+ex.getMessage());
        } finally {
            Log.d("jcmtest", "finally");
            this.stopSelf();
        }
        return null;
    }



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值