为了账号安全,请及时绑定邮箱和手机立即绑定

创建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下载
官方微信