【发布时间】:2014-12-05 09:32:43
【问题描述】:
我想基于 xpath 创建一个动态 xml 树。假设我的 xpath 值为
Product/Organization/RegisteredDetail/something
我想以以下格式输入值。
<product>
<organization>
<registeredDetail>
<something>valueOfSomething</something>
</registeredDetail>
</organization>
<product>
简而言之,我想通过读取 xpath 来创建一个树视图/树表。我想将值放在最里面的孩子并在树结构中显示值的位置,或者只是以树的形式显示孩子的位置。 xpath 的值会有所不同。任何使用 java 或 jquery 的建议对我来说都是有价值的。
我尝试实施@ThW 给出的建议。我做了一些修改:
var dom = document.implementation.createDocument("", "", null);
var node = dom;
新代码:
var pathmap = new Object();
var path1 = 'Product/Organization/RegisteredDetail/something';
var path2 = 'Product/Organization/RegisteredDetail';
var path3 = 'Product/Organization/RegisteredDetail/anything/nothing';
pathmap[path1] = 'Product/Organization/RegisteredDetail/something';
pathmap[path2] = 'Product/Organization/RegisteredDetail';
pathmap[path3] = 'Product/Organization/RegisteredDetail/anything/nothing';
console.log(pathmap);
for (var path in pathmap) {
var parts = path.split(/\//);
for (var i = 0; i < parts.length; i++) {
node = node.appendChild(dom.createElement(parts[i]));
}
node.appendChild(dom.createTextNode('valueOfSomething'));
}
var serializer = new XMLSerializer();
console.log(dom);
我得到的输出是
如您所见,树节点正在重复。我需要在它所属的地方添加 valueOfSomething。如果节点存在,请不要重新创建它,只需添加一个新子节点。像这样的
<product>
<organization>
<registeredDetail>
valueOfSomethng
<something>valueOfSomethng</something>
<anything>
<nothing>valueOfSomethng</nothing>
</anything>
</registeredDetail>
</organization>
</product>
我打算将 xpath 和 valueOfSomething 的值放在 hashMap 中。并动态放置“valueOfSomething”的值。
【问题讨论】:
标签: java jquery xml xpath treeview