當我們向xml檔案中新增節點時,可能會遇到新增節點寫在了一行,或者分行後沒有縮排。這樣會影響xml檔案的美觀,以及我們可閱讀性。
今天我們用dom解決以上問題,假設有乙個xml檔案:book.xml,以下就是我們要達到的效果。
<?xml version="1.0" encoding="utf-8"?>
c++ primer plus
80
1.首先建立工廠,得到documentbuilder物件
documentbuilder builder=documentbuilde***ctory.newinstance().newdocmentbuilder();
2.如果xml檔案存在,就得到xml檔案中的根節點,如果不存在建立乙個根節點。
存在document document=builder.parse(file);//得到文件物件
element root=document.getdocumentelement();//得到根節點
不存在document document=builder.newdocument();//建立文件物件
element root=document.createelement("books");//建立乙個根節點 books 根節點名
3.建立子節點,並賦值
element book=document.createelement("book");//建立book節點
book.setattribute("id","1");//為book節點設定屬性名 和屬性值
element name=document.createelement("name");
name.settextcontent("c++ primer plus");//設定節點間的文字值
element price=documenr.createelement("price");
price.settextcontent("80");
4.新增節點到對應的位置
ps:注意新增的順序。如果檔案不存在 就將root節點新增到document中,如果存在則不需要。
5.將建立及新增好的元素寫入到xml檔案中,用方法將其封裝
public static void writer(document document,string path)else
//建立節點設定屬性
element book = books.createelement("book");
book.setattribute("id","1");
element price = books.createelement("price");
price.settextcontent("80");
element name = books.createelement("name");
name.settextcontent("c++ primer plus");
//新增節點
//如果檔案存在 不需要新增根節點(乙個xml中只能有乙個根節點)
writer(books,path);//寫入xml檔案
}public static void writer(document document,string path) throws ioexception
}結果:
換行和縮排都有了,達到了我們想要的效果。
或許有小夥伴會問,在新增節點時,為何每次都需要判斷檔案是否存在?當我們需要頻繁對xml檔案進行操作時,只需將建立節點那部分封裝即可。首先,如果檔案不存的話,我們就需要建立乙個xml檔案,並且建立乙個根節點。如果檔案存在的話,我們只需得到根節點。然後將後面建立的節點加入到根節點下即可。需要注意的是如果檔案不存在,還需要將根節點新增到文件(document)物件下。
每日雞湯:該發生的總會發生,大多數擔心的事又多數不會發生!
over!
xml節點的新增和刪除
新增之前的結果 新增之後的結果 刪除之後就和新增之前是一樣的了,呵呵 如下 using system using system.collections.generic using system.componentmodel using system.data using system.drawing...
xml新增節點(加簽)
xml報文加簽名,也就是往xml報文裡面多加乙個節點,實質就是追加乙個引數放進進去。除了加簽的用途,也可以加其他引數。package xmltest import org.dom4j.document import org.dom4j.documentexception import org.dom...
canvas文字首行縮排和換行處理
param ctx 2d上下文物件 param text 繪製文字 param x 座標軸x位置 param y 座標軸y位置 param options 包含 maxwidth 最大寬度,lineheight 文字行高,row 限制行數,textindent 首行縮排,fontsize 文字大小 ...