XML新增節點換行和縮排問題

2021-08-20 03:27:13 字數 1984 閱讀 3588

當我們向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 文字大小 ...