0
我正在Vaadin中執行一個項目,並需要執行以下操作。我做了一個服務器請求,並得到一個XML字符串作爲迴應。而且,我對這個XML文件在運行時的外觀一無所知。我需要將此XML字符串轉換爲vaadin樹。將XML字符串加載到Vaadin樹中
我看到一些答案,他們說加載到一個HierarchicalContainer和所有,但我無法理解它。
請幫幫我!
我正在Vaadin中執行一個項目,並需要執行以下操作。我做了一個服務器請求,並得到一個XML字符串作爲迴應。而且,我對這個XML文件在運行時的外觀一無所知。我需要將此XML字符串轉換爲vaadin樹。將XML字符串加載到Vaadin樹中
我看到一些答案,他們說加載到一個HierarchicalContainer和所有,但我無法理解它。
請幫幫我!
如果你不想使用HierarchicalContainer(我有沒有經驗),你可以解析XML文檔遞歸這樣的:Recursive XML-parser
然後,只需添加項目,並設置父。事情是這樣的:
@Override
protected void init(VaadinRequest request) {
Tree tree = new Tree();
setContent(tree);
try {
File fXmlFile = new File("C:\\temp\\sample.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
Element root = doc.getDocumentElement();
Object rootItem = root.getNodeName();
tree.addItem(rootItem);
addChildrenToTree(tree, root.getChildNodes(), rootItem);
} catch (Exception e) { }
}
private void addChildrenToTree(Tree tree, NodeList children, Object parent) {
if (children.getLength() > 0) {
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
Object child = node.getNodeName();
tree.addItem(child);
tree.setParent(child, parent);
addChildrenToTree(tree, node.getChildNodes(), child);
}
}
}
所以,通常在一個特定的樹我最後的XML元素的形式吧 的。現在,我想把酒吧當成foo的孩子。 foo沒有任何其他的孩子。我將這段代碼添加到了else if else in addChildrenToTree 'tree.addItem(parent.getTextContent()); tree.setParent(parent.getTextContent(),parent.getNodeName());' 是的,我通過父母作爲一個元素,而不是一個字符串。請幫助:) –
pratnala
看起來像這個值也被認爲是一個節點,所以試試if(children.getLength()> 1){...} else {<你發佈的內容>} – kris54321