2014-06-17 28 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