【问题标题】:Xmldiff tool to output node name and previous valuexmldiff 工具输出节点名称和前一个值
【发布时间】:2012-02-16 18:39:34
【问题描述】:

我正在使用 xml diff dll 比较 2 个 xml 文件。 我无法获取节点名称和节点的旧值,例如 文件 1:

文件 1

<LastNameInfo>
    <LNameNum>1</LNameNum>
</LastNameInfo>

文件 2:

<LastNameInfo>
    <LNameNum> 5</LNameNum>
</LastNameInfo>

我什至需要把这个例子中的节点名称 LnameNum 和旧值 1 都拿出来有什么帮助吗??

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    所以 XMLDiff 'diffgram' 定义差异的方式不是基于 'name' 而是基于节点顺序,它从上到下枚举它们。

    查看MSDN了解更多详情

    您可以使用 diffpatch 工具将 diffgram 应用于特定的 XML,但它也没有明确提及 diffgram 中的“旧”值。它要么更改为“newvalue”,要么删除节点 x,但不指定内容。

    它能够输出一个 HTML 视图,通过颜色突出显示新旧并排显示 - 但如果您有兴趣做一些事情,比如生成一个看起来像这样的文件:

    <LastNameInfo>
      <LNameNum>
        <old>1</old>
        <new>5</new>
      </LNameNum>
    </LastNameInfo>
    

    甚至只是一些控制台输出,例如:

    Node Name: LNameNum
    Changed From: 1 To: 5
    

    您将需要自己解析 XML Diffgram 以及您自己的文件,并且基本上会发现

     <xd:node match="1">
           <xd:change match="1"/>5</xd:change>
     </xd:node>
    

    指的是名为 LNameNum 的节点

    【讨论】:

    • 你能解释一下“它能够输出一个 HTML 视图,通过颜色突出显示新旧并排显示”.. 是否已经有工具或代码可以做到这一点??
    • 当然,如果您只是想实际看到它,请下载 XMLNotepad (microsoft.com/download/en/…)。被调用的库称为 xmldiffpatch.dll 和 xmldiffpatch.view.dll
    • 哦,应该在 XMLNotepad 中提到,在记事本中加载第一个文件后转到查看->比较 XML 文件
    • 你知道我是否可以下载源代码..我想为我的项目做几乎同样的事情..但是这个比较和突出显示将是我的第 2 层..
    • xmlnotepad.codeplex.com 为 XMLNotepad 的源代码,xmldiff dll 可以在上面提到的 MSDN 中找到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多