亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

創建xml文件的縮進與添加相同子節點

寫出來xml文件怎么自動縮進啊,不僅僅是換行?還有怎么添加多個book節點???

正在回答

2 回答

縮進可以采用tab鍵,也可以使用xml專門的編輯器;

添加多個book節點:

<bookstore>

????<book>...</book>

????<book>...</book>

????<book>...</book>

????....

</bookstore>

0 回復 有任何疑惑可以回復我~
#1

腳踏地 提問者

不好意思我問題沒問清楚,是用java創建xml文件中出現的這些問題,在java代碼中怎么編寫能實現?
2015-01-26 回復 有任何疑惑可以回復我~
#2

JessicaJiang 回復 腳踏地 提問者

縮進的話要看你采用什么方式生成xml,例如使用DOM4J的話,提供給你一個OutputFormat.createPrettyPrint()方法,這樣生成的xml就是換行+縮進的; 如果是添加多個book結點,可以通過循環(for等)來進行添加。
2015-02-27 回復 有任何疑惑可以回復我~

//之前之所以添加的book節點會覆蓋前面的book節點,是因為變量名都相同,這樣的話自然下面的要替換上面的值


public static void main(String[] args) {
??new TestXml().createXml();
?}
?
?public void createXml(){
??DocumentBuilder db=getDocumentBuilder();
??Document document=db.newDocument();
??document.setXmlStandalone(true);
??Element books=document.createElement("books");
??document.appendChild(books);
??
//??添加多個節點
??books.appendChild(getChildNode(document,"1","冰與火之歌","喬治馬丁","39"));
??books.appendChild(getChildNode(document,"2","安徒生童話","安徒生","29"));
??
??TransformerFactory tff=TransformerFactory.newInstance();
??
??try {
???Transformer tf=tff.newTransformer();
???tf.setOutputProperty(OutputKeys.INDENT, "yes");

//設置縮進量
???tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
???tf.transform(new DOMSource(document), new StreamResult(new File("lib/books1.xml")));
???
??} catch (TransformerConfigurationException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch (TransformerException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
?}
?
?public DocumentBuilder getDocumentBuilder(){
??DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
??DocumentBuilder db = null;
??try {
???db=dbf.newDocumentBuilder();
??} catch (ParserConfigurationException e) {
???e.printStackTrace();
??}
??return db;
?}
?
?public Element getChildNode(Document doc,String id,String name,String author,String price){
??Element childNode=doc.createElement("book");
??childNode.setAttribute("id", id);
??childNode.appendChild(getChildNodeElement(doc,"name",name));
??childNode.appendChild(getChildNodeElement(doc,"author",author));
??childNode.appendChild(getChildNodeElement(doc,"price",price));
??return childNode;
?}

?public Element getChildNodeElement(Document doc,String name,String text){
??Element element=doc.createElement(name);
??element.setTextContent(text);
??return element;
?}

4 回復 有任何疑惑可以回復我~
#1

Raven1

同樣的問題,求解答
2016-07-22 回復 有任何疑惑可以回復我~
#2

Raven1 回復 Raven1

仔細看了一下,以上代碼已經是完成了縮進,添加相同節點名的操作。另外制造了函數,節點名變量放入到函數之后,就變成了局部變量,避免了在創建xml函數里直接添加同名節點時同名函數會覆蓋前面的內容
2016-07-22 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

創建xml文件的縮進與添加相同子節點

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號