XML解析以及增删改查的操作6

前端之家收集整理的这篇文章主要介绍了XML解析以及增删改查的操作6前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有一个字符串操作类StringUtil要贴出来,之前代码里用到:

public class StringUtil {
    
    public static final String BLANKS = " \t\n";
    /**去掉首尾的空格、制表符、回车符*/
    public static String trim(String str){
        if(str==null){
            return str;
        }
        String ss = str.trim();
        for(int i=0;i<ss.length();i++){
            char c = ss.charAt(i);
            if(BLANKS.indexOf(c+"")==-1){
                ss = ss.substring(i);
                break;
            }
        }
        for(int i=ss.length()-1;i>=0;i--){
            char c = ss.charAt(i);
            if(BLANKS.indexOf(c+"")==-1){
                ss = ss.substring(0,i+1);
                break;
            }
        }
        return ss;
    }
    
    /**
     * 获取字符串str中位于两个相同字符ch之间的字符串,ch为在字符串str中出现的所有位置的前两个,例如
     * getSubStringBeetween("mimi...mi",'m') 返回字符串i
     * */
    public static String getSubStringBeetween(String str,char ch){
        String temp = str;
        int idx = temp.indexOf(ch+"");
        temp = temp.substring(idx+1);
        idx = temp.indexOf(ch+"");
        temp = temp.substring(0,idx);
        return temp;
    }
    
    /**
     * 得到字符ch在字符串src中的所有索引
     * */
    public static List<Integer> getIndexs(String src,char ch){
        List<Integer> list = new ArrayList<Integer>();
        if(src==null||src.length()==0){
            return list;
        }
        for(int i=0;i<src.length();i++){
            if(src.charAt(i)==ch){
                list.add(i);
            }
        }
        return list;
    }
    
}



下面就是写了一个测试类:

public class Test {
    public static void main(String[] args) throws IOException {
        /*Document document = new Document();
        document.setEncoding(Document.GBK);
        document.setVersion(Document.DEFAULT_VERSION);
        document.addAttribute(new Attribute("standalone","no"));
        document.setEncoding(Document.DEFAULT_ENCODING);
        Element root = new Element();
        document.addNode(root);
        root.setName("root");
        Attribute att1 = new Attribute("id","1");
        Attribute att2 = new Attribute("sex","female");
        root.addAttribute(att1);
        root.addAttribute(att2);
        AnnotationNode annotationNode = new AnnotationNode("xxxx...");
        document.addNode(annotationNode);
        Element e1 = new Element();
        e1.setName("e1");
        e1.addAttribute(new Attribute("age","100"));
//        e1.setTextComment("哈哈,e1 text...");
        TextNode textNode1 = new TextNode("哈哈  e1 text...");
        e1.addSonNode(textNode1);
        Element e2 = new Element();
        e2.setName("e2");
        e2.addAttribute(new Attribute("婚否","未婚"));
        e2.addAttribute(new Attribute("age","19"));
//        e2.setTextComment("e2 text...");
        TextNode textNode2 = new TextNode("哈哈  e2 text...");
        e2.addSonNode(textNode2);
        TextNode textNode3 = new TextNode("哈哈  3333 text...");
        root.addSonNode(textNode3);
        root.addSonNode(e1);
        root.addSonNode(e2);
        System.out.println(document.toString());
        System.out.println("=====================");
        System.out.println(root.getChildNodes());
        document.saveTo("c:/test/mydemo.xml");
        System.out.println("=====================");
        System.out.println(DocumentUtil.getXMLString("c:/test/mydemo.xml"));
        System.out.println("------------------------------");
        System.out.println(Arrays.toString(getElementsByTag("e1")));*/
        
        ////////////////////////////////////////////////////////////////////////////////////////////////////////
        
        
//        Document document =DocumentUtil.parse("c:test2/ScreenSaver.XML");
////        System.out.println(document);
//         Element root = document.getRootNode();
//         Set<Node> advs = root.getNodesByName("Adv");
//         Iterator<Node> it = advs.iterator();
//         for(;it.hasNext();){
//             Element node = (Element) it.next();
//             if(node.containsAttribute(new Attribute("Img","05.png"))){
//                 node.addAttribute(new Attribute("SDate","2013-12-16"));
//                 node.addAttribute(new Attribute("EDate","2020-12-16"));
//                 node.addAttribute(new Attribute("btnSDate",""));
//                 node.addAttribute(new Attribute("btnEDate",""));
//                 break;
//             }
//         }
//         Set<Node> nodes = root.getNodesByName("mimi");
//         Node[] mimi = new Node[nodes.size()];
//         nodes.toArray(mimi);
//         Element aimimi = (Element) mimi[0];
//         TextNode aimimiNode = (TextNode) aimimi.getNodeList().get(0);
//         aimimiNode.setText("爱咪咪呀。。。");
//         document.saveTo("c:test2/ScreenSaver.XML");
        
    /////////////////////////////////////////////////////////////////////////////////////////////////////
         long t1 = System.currentTimeMillis();
         Document document2 =DocumentUtil.parse("c:test2/AndroidManifest.xml");
         document2.attributeLine = Document.SINGLE_LINE;
         document2.setRootNodeAttributeLine(false);
         document2.saveTo("c:test/AndroidManifest.xml");
         System.out.println(document2);
         long t2 = System.currentTimeMillis();
         System.out.println(t2-t1);
        
    }

}



完成了!就是这么用的,可以生成xml文档,进行增删改查的操作。也可以解析xml文件。测试了一个2000多行的xml文件用了300ms,毕竟读取整篇文档进行字符串的操作挺耗性能

猜你在找的XML相关文章