2013-05-27 17 views
0

我試圖創建一個XML樹,每個元素都保存在像一個單獨的文本文件中單獨的文本文件中的每一個元素: -店用java

<product> 
<product_id value="1"> 
    <tab_id value ="3" /> 
</product_id> 
</product> 

上述保存爲1.txt和:

<product> 
<product_id value="2"> 
    <tab_id value ="5" /> 
</product_id> 
</product> 

上面保存爲2.txt

我試圖這樣的: -

package ep; 

import java.io.File; 
import java.util.Random; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Attr; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

public class Tclass { 

    public static void main(String argv[]) { 

     try { 

      DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

     // root elements 
     Document doc = docBuilder.newDocument(); 
     Element rootElement = doc.createElement("products"); 
     doc.appendChild(rootElement); 
     int a = 351; 
     Random rand = new Random(); 
     int maximum = 5; 
     int minimum = 2; 
     int range = maximum - minimum + 1; 

     for(int x = 1; x < 3; x = x+1) 
     { 
      // staff elements 
      Element staff = doc.createElement("product_id"); 
      rootElement.appendChild(staff); 

      // shorten way 
      staff.setAttribute("value", ""+x); 

      Element tab_id = doc.createElement("tab_id"); 
      staff.appendChild(tab_id); 

      int randomNum = rand.nextInt(range) + minimum;  
      // shorten way 
      tab_id.setAttribute("value", ""+randomNum); 

     } 
     // write the content into xml file 
     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(new File("file.xml")); 

     // Output to console for testing 
     // StreamResult result = new StreamResult(System.out); 

     transformer.transform(source, result); 

     System.out.println("File saved!"); 

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

我的問題是我如何在一個單獨的文本文件中分別做所有元素?謝謝。

+1

使用'Document'爲每個文檔。 – 2013-05-27 10:31:34

回答

1

如果要爲每個產品保存不同的文本文件,您需要爲每個文檔創建一個文檔,並將這些代碼集成到循環中。

線沿線的東西:

public class Tclass { 

    public static void main(String argv[]) { 

     try { 

     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

     for(int x = 1; x < 3; x = x+1) 
     { 

      // root elements 
      Document doc = docBuilder.newDocument(); 
      Element rootElement = doc.createElement("product"); 
      doc.appendChild(rootElement); 
      int a = 351; 
      Random rand = new Random(); 
      int maximum = 5; 
      int minimum = 2; 
      int range = maximum - minimum + 1; 

      // staff elements 
      Element staff = doc.createElement("product_id"); 
      rootElement.appendChild(staff); 

      // shorten way 
      staff.setAttribute("value", ""+x); 

      Element tab_id = doc.createElement("tab_id"); 
      staff.appendChild(tab_id); 

      int randomNum = rand.nextInt(range) + minimum;  
      // shorten way 
      tab_id.setAttribute("value", ""+randomNum); 



// write the content into xml file 
      TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
      Transformer transformer = transformerFactory.newTransformer(); 
      DOMSource source = new DOMSource(doc); 
      StreamResult result = new StreamResult(new File("file"+x+".xml")); 

      // Output to console for testing 
      // StreamResult result = new StreamResult(System.out); 

      transformer.transform(source, result); 

      System.out.println("File saved!"); 

     } 


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

我有一個文本文件: - 與內容'5,6,7,8,9,12'如何讀取此數字並隨機使用此數字? –