【问题标题】:Write xml using Java for Multiple Records使用 Java 为多条记录编写 xml
【发布时间】:2013-09-29 01:05:17
【问题描述】:

如何为多条记录写xml?

期望的输出

<Root>
    <Header>
        <HeaderTag>Table of Contents</HeaderTag>
        <HeaderRow>
            <Content>1.Intoduction</Content>
        </HeaderRow>
        <HeaderRow>
            <Content>2.Basics</Content>
        </HeaderRow>
    </Header>
</Root>

如上所述,标题行需要循环或迭代器来容纳内容行。 感谢您的帮助。

使用下面的代码

public void createRuleXML() {  
    try {  
        String newXmlPath = "C:\\write\\CreatedRuleXml.xml";

        DocumentBuilderFactory documentFactory = 
                        DocumentBuilderFactory.newInstance();  
        DocumentBuilder documentBuilder = 
                        documentFactory.newDocumentBuilder();

        // define root elements  
        Document document = documentBuilder.newDocument();  
        Element rootElement = document.createElement("Root");  
        document.appendChild(rootElement);

        // define school elements  
        Element TocHeader = document.createElement("Header");  
        rootElement.appendChild(TocHeader); 

        Element HeaderTag = document.createElement("HeaderTag");
        HeaderTag.appendChild(document.createTextNode("Table Of Contents"));     
        TocHeader.appendChild(HeaderTag);

        Element TocHeaderRow = document.createElement("HeaderRow");  
        TocHeader.appendChild(TocHeaderRow);
        Element Content = document.createElement("Content");

        Content.appendChild(document.createTextNode("1.Introduction"));     
        TocHeaderRow.appendChild(Content);
        Content.appendChild(document.createTextNode("2.Basics"));     
        TocHeaderRow.appendChild(Content);

但是它正在返回 目录1.简介2.基础知识

【问题讨论】:

标签: java xml


【解决方案1】:

用下面的代码解决了。

public void createRuleXML() {  
  try {  


   String newXmlPath = "C:\\docwrite\\CreatedRuleXml.xml";          

   DocumentBuilderFactory documentFactory = DocumentBuilderFactory  
     .newInstance();  
   DocumentBuilder documentBuilder = documentFactory  
     .newDocumentBuilder();  

   // define root elements  
   Document document = documentBuilder.newDocument();  
   Element rootElement = document.createElement("Root");  
   document.appendChild(rootElement);  

   // define school elements  
   Element TocHeader = document.createElement("Header");  
   rootElement.appendChild(TocHeader); 

   Element HeaderTag = document.createElement("HeaderTag");
   HeaderTag.appendChild(document.createTextNode("Table Of Contents"));     
   TocHeader.appendChild(HeaderTag);           

   TocHeader.appendChild(getToc(document, "1.Introduction"));          
   TocHeader.appendChild(getToc(document, "2.Basics"));           

   // creating and writing to xml file  
   TransformerFactory transformerFactory = TransformerFactory  
     .newInstance();  
   Transformer transformer = transformerFactory.newTransformer();  
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
   DOMSource domSource = new DOMSource(document);  

   StreamResult streamResult = new StreamResult(new File(newXmlPath));

   transformer.transform(domSource, streamResult);  

   System.out.println("File saved to specified path!");  

  } catch (ParserConfigurationException pce) {  
   pce.printStackTrace();  
  } catch (TransformerException tfe) {  
   tfe.printStackTrace();  
  }  
 }    


private static Node getToc(Document doc,  String tocContent) {
       Element tocHeaderRow = doc.createElement("HeaderRow");

       //create name element
       tocHeaderRow.appendChild(getDetailElements(doc, tocHeaderRow, "Content", tocContent));

       return tocHeaderRow;
   }


//utility method to create text node
private static Node getDetailElements(Document doc, Element element, String name, String value) {
    Element node = doc.createElement(name);
    node.appendChild(doc.createTextNode(value));
    return node;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2017-02-24
    • 2019-02-18
    相关资源
    最近更新 更多