简化XML树 - 获取元素之间的关系

时间:2011-08-11 07:56:48

标签: java xml

我有复杂的XML树,我想“重新分析”。我想要的是获得具有给定属性的所有对象(让我们说“类型”)并获得它们之间的关系。因此意味着 - 它只想重新创建具有type属性的元素的树结构。另外(这就是为什么我不能使用例如XSLT)我必须从基础XML树中将新创建的对象(带有类型的元素)引用到Node(Element)。

我检查了 compareDocumentPosition 方法,但它只基于行位置,而不是树关系

2 个答案:

答案 0 :(得分:1)

这很有意思!如果我正确理解了问题,您想转换

                  Root                                Root
                /      \                            /      \ 
               N       T2         --->             T1       T2
             /   \    /   \                                /
            N    T1  T3    N                              T3

如果是这样,我想你可以这样做:

  1. 使用XPath选择具有特定属性的所有元素并将其转换为Set
  2. 删除不在集合
  3. 中的所有叶节点
  4. 走树启动,向上移动每片叶子,直到它的父节点为root或选定节点
  5. 从2开始重复,直到没有未选择的叶节点

答案 1 :(得分:0)

我不确定你是否有任何限制,但是可能值得将xml解析为一个类或几个类,然后如果给定的类型== foo

则重写XML