Java 解析XML并根据优先级列表更改数据
我想使用Java的优先级列表动态读取和修改XML数据。在处理XML数据时,程序应将当前节点与优先级列表相匹配,并根据此列表决定要为节点执行的操作。列表如下所示: 对于这样的XML:Java 解析XML并根据优先级列表更改数据,java,xml,xpath,Java,Xml,Xpath,我想使用Java的优先级列表动态读取和修改XML数据。在处理XML数据时,程序应将当前节点与优先级列表相匹配,并根据此列表决定要为节点执行的操作。列表如下所示: 对于这样的XML: 子1数据1值 子1数据2值 子2数据1值 子2数据2值 这个概念的问题是我不能“反转”XPath逻辑(XPath选择节点,我需要匹配已经选择的节点)。有什么方便的方法可以做到这一点吗?XSLT允许您编写模板并给它们优先级,例如,…,因此,也许XSLT是您正在寻找的解决方案。@MartinHonnen也考虑过使
子1数据1值
子1数据2值
子2数据1值
子2数据2值
这个概念的问题是我不能“反转”XPath逻辑(XPath选择节点,我需要匹配已经选择的节点)。有什么方便的方法可以做到这一点吗?XSLT允许您编写模板并给它们优先级,例如,
…
,因此,也许XSLT是您正在寻找的解决方案。@MartinHonnen也考虑过使用XSLT。令人担忧的是xslt可能会变得非常混乱和不可读,但我将再次对此进行研究。XSLT仅基于优先级应用一个模板,对吗?适用于Java和Saxon 9的XSLT 2.0具有
,这将允许您应用下一个匹配的优先级较低的模板。XSLT允许您编写模板并为它们赋予优先级,例如,…
因此,也许XSLT是您正在寻找的解决方案。@MartinHonnen也考虑过使用XSLT。令人担忧的是xslt可能会变得非常混乱和不可读,但我将再次对此进行研究。XSLT仅基于优先级应用一个模板,对吗?可用于Java和Saxon 9的XSLT 2.0具有
,这将允许您应用下一个优先级较低的匹配模板。
/root/child[1]/data1; action1
/root/child/data1; action2
/root/child/*; action3
//*; generic action
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child>
<data1>child 1 data1 value</data1>
<data2>child 1 data2 value</data2>
</child>
<child>
<data1>child 2 data1 value</data1>
<data2>child 2 data2 value</data2>
</child>
</root>