2014-06-17 61 views
0

我想要做的正是在這裏問: Convert JTree to XML 而他得到的回答是不錯的,但是當我嘗試不使用它,我得到了一個INVALID_CHARACTER_ERR。(JAVA)從JTree的到XML

這裏是我已經把JTree中的XML文件的例子:

<?xml version="1.0"?> 
<company0> 
<staff id="1001"> 
    <firstname>yong</firstname> 
    <lastname>mook kim</lastname> 
    <nickname>mkyong</nickname> 
    <salary>100000</salary> 
    </staff> 
    <staff id="2001"> 
    <firstname>low</firstname> 
    <lastname>yin fong</lastname> 
    <nickname>fong fong</nickname> 
     <salary>200000</salary> 
    </staff> 
</company0> 

而且我想提出的是返回一個字符串的函數(或直接在XML文件)返回的內容的JTree。

我怎麼能這樣做呢?

+0

代碼因爲它試圖不檢查來創建基於所述節點上的元件,如果它是有效的可能會失敗(例如,一個空字符串):'元件EL = doc.createElement(node.toString());'。如果XML文檔在標籤之間沒有空格,它*可能會工作。要照原樣使用你的文件,只有當'node.toString()'產生一個有效的標記時,你才需要創建新的元素。 – helderdarocha

+0

好的,非常感謝你的回答。但這是否意味着它將無法處理諸如「'? – user3749056

回答

1

你的「createTree」或許應該是這樣的:

private static Element createTree(Document doc, TreeModel model, Object node) { 
     Element el = doc.createElement(node.toString()); 
     for(int i=0;i<model.getChildCount(node);i++){ 
       DefaultMutableTreeNode child = (DefaultMutableTreeNode)model.getChild(node, i); 
     if (child.isLeaf()) { 
        el.setTextContent(child.toString()); 
     } else { 
        el.appendChild(createTree(doc,model,child)); 
     } 
    } 
    return el; 
} 

因爲原來createTree節點值轉換爲元素,有你鏈接的檢查(在上面的,如果條件)失蹤

+0

太棒了!這工作完美。 – user3749056