2015-04-03 32 views
0

XML格式我有一個.txt文件:無效字符錯誤 - 在java中

Seven Pounds 
Drama 
13 martie 2009 
8 
tt0814314 
/
Source Code 
Mystery SF Thriller 
1 aprilie 2011 
8 
tt0945513 
/
V for Vendetta 
Action Drama Thriller 
16 martie 2006 
8 
tt0434409 
/
Braveheart 
Action Biography Drama 
24 mai 1995 
9 
tt0112573 
/
Se7en 
Drama Mystery Thriller 
22 septembrie 1995 
9 
tt0114369 
/

而我正在試圖做的是:所有從一個List<List<String>> L文件讀取然後將其寫入到一個XML格式。問題是我得到了INVALID_CHARACTER_ERR消息,儘管我已經替換了空格字符。該錯誤信息是這樣的:

org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML    character is specified. 
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElement(CoreDocumentImpl.java:622) 
at pa.tema5ex1.Tree.CreeazaRaportXML(Tree.java:246) 
at pa.tema5ex1.PATema5Ex1.main(PATema5Ex1.java:22) 

和我一直在做現在的代碼如下:

public void CreeazaRaportXML() 
{ 
    try 
    { 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.newDocument(); 


     Element rootElement = doc.createElement("ColectieDeFilme"); 
     doc.appendChild(rootElement); 

     for (int i = 0; i < colectieFilme.size(); i++) 
     { 
      for (int j = 0; j < colectieFilme.size(); j++) 
      { 
       String current = colectieFilme.get(i).get(j).replaceAll(" ", "").replace("\n", ""); 
       System.out.println("current -> " + current); 
       Element dateFilmCurent = doc.createElement(current); 
       rootElement.appendChild(dateFilmCurent);  
      } 

     } 

     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(new File("C:\\Users\\miTzuliK\\Documents\\NetBeansProjects\\[PA]Tema5Ex1\\RaportXML.xml")); 
     transformer.transform(source, result); 
     // Output to console for testing 
     StreamResult consoleResult = new StreamResult(System.out); 
     transformer.transform(source, consoleResult); 
    } 

    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

回答

0

1)我相信這是一個有點錯誤的做法,因爲你正在使用的數據作爲標籤名稱。這將是更正確創建XML結構像

<film> 
    <name>Seven Pounds</name> 
    ... 
    <id>tt0434409</id> 
</film> 

在這種情況下,你的控制結構,避免在XML標記名稱意外不允許的字符

2)如果你還是想用目前的方法嘗試修剪字符串st結束,也許有特定的行分隔符。

3)它可能是不正確的循環第二次使用。你在初始列表上迭代的大小,如果錯誤。認爲應該像

for (int i = 0; i < colectieFilme.size(); i++) { 
    List<String> filmStrings = colectieFilme.get(i); 
    for (int j = 0; j < filmStrings.size(); j++) { 
    ... 
    } 
}