有一个字符串操作类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,毕竟读取整篇文档进行字符串的操作挺耗性能的