-1

我有这样的xml文档:

<datatypes xmi:id="ID_01"</datatypes>
<datatypes xmi:id="ID_02">
  <fields xmi:id="ID_03">
    <datatype xmi:idref="ID_01"></datatype>
  </fields>
</datatypes>

我也有更改 xml 文件的 spesil 工具。它允许您添加新节点属性并更改旧节点属性,但使用后所有 ID 都会更改。

使用后工具:

<datatypes xmi:id="ID_11"</datatypes>
<datatypes xmi:id="ID_12">
  <fields xmi:id="ID_13">
    <datatype xmi:idref="ID_11"></datatype>
  </fields>
  <something_new/>

</datatypes>

我想比较两个 xml 文件并只找到<something_new/>。当我使用标准差异时,我会看到所有更改(ID 也是)

有没有简单的方法来解决这个问题?如果没有,我应该使用什么语言(IDE)来更快地编写这样的比较。

4

2 回答 2

0

您可以尝试diffxml

XMLUnit有一个diff特性

于 2013-03-05T12:35:52.690 回答
0

我会查看 Spesil 的文档(这是一个库吗?我在任何地方都找不到此文档),看看这种行为是否符合预期,可能有一些配置会阻止 id 号被替换。 .

如果有此 XML 消息的模式,您可以使用 JAXB 将您的 XML 解组为您可以访问的模型,您可以传递之前和之后(编组两者),然后编写一个例程来查找更改)。如果您需要访问更改的更多属性/元素,这将是一个很好的方法,因为您可以将更改作为对象访问(而不仅仅是文本更改,就像使用 diff 工具的情况一样)。我想这取决于您打算如何使用这些更改!

于 2013-03-05T12:37:59.660 回答