0 0

Ruby::如何比较两个xml片段?5

通过Ruby,如何比较两个xml片段?
xml中的元素位置可以不一样,可以交换,
但是属性和元素的值要相等,
xml深度不限。

请给出一两个工具,比如你可能提供“test/unit/xml”这个gem,但你要把这个可运行的代码告诉我,因为我用这个gem跑简单的三层的xml没问题,跑四层以上或者有中文的xml就会出错。所以给我一个gem之前,请你先跑一下复杂的xml片段。

谢谢!
问题补充:
通过Ruby,如何比较两个xml片段?
xml中的元素位置可以不一样,可以交换,
但是属性和元素的值要相等,
xml深度不限。

请给出一两个工具,比如你可能提供“test/unit/xml”这个gem,但你要把这个可运行的代码告诉我,因为我用这个gem跑简单的三层的xml没问题,跑四层以上或者有中文的xml就会出错。所以给我一个gem之前,请你先跑一下复杂的xml片段。

谢谢!

谢谢强强,不过xml转换成hash后如何比较才是重点问题问题,两个hash也不好比较的。
问题补充:
=====================================================

兄弟们,帮忙关注下,挺有意思的一个算法问题。

请给出能比较xml1和xml2相等的算法。

require 'rubygems'  
require 'pp'  
require 'active_support'  
  
xml1=<<-XML   
    <servlet>   
        <servlet-name>default</servlet-name>   
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>   
        <init-param>   
            <param-name>debug</param-name>   
            <param-value>0</param-value>   
        </init-param>   
        <init-param>   
            <param-name>listings</param-name>   
            <param-value>false</param-value>   
        </init-param>   
        <load-on-startup>1</load-on-startup>   
    </servlet>   
XML   
  
xml2=<<-XML   
    <servlet>   
        <servlet-name>default</servlet-name>   
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>   
        <init-param>   
            <param-value>false</param-value>   
            <param-name>listings</param-name>   
        </init-param>   
        <init-param>   
            <param-name>debug</param-name>   
            <param-value>0</param-value>   
        </init-param>   
        <load-on-startup>1</load-on-startup>   
    </servlet>   
XML   
h1=Hash.from_xml xml1   
h2=Hash.from_xml xml2   
  
pp h1   
p "*"*100  
pp h2   
p "*"*100  
p h1==h2  
2008年11月14日 11:19

2个答案 按时间排序 按投票排序

0 0

见我的论坛回复

2008年11月15日 15:53
0 0

http://liuqiang.iteye.com/blog/226362 仅参考用

2008年11月15日 10:11

相关推荐

    Python & Ruby 学习

    以下是对这两个语言的一些核心知识点的详细说明: **Python** 1. **基础语法**:Python 以其简洁易读的语法著称,如缩进替代大括号表示代码块,以及内置的丰富数据结构(如列表、元组、字典)。 2. **变量和数据...

    equivalent-xml:简单的Nokogiri和Oga XML等效性测试

    等效XML 描述 问题 测试XML输出很困难: 由于序列化的可变性,比较文本输出非常困难。 属性顺序无关紧要。... 最常见的用例是比较两个Document实例。 当且仅当以下情况,node_1等效于node_2: node_1和nod

    thymeleaf 使用手册

    Thymeleaf 支持两种主要模式:HTML5/XHTML 以及 XML。此外,它还支持多种语言标准,包括 Java、.NET 和 Ruby 等。 #### 二、Thymeleaf 的核心特性 1. **模板渲染**:Thymeleaf 能够将数据模型与静态 HTML 文件相...

    中科院高级软件工程期末题库

    2. 如何比较两个文件或当前文件和以前版本的修订? - 正确答案:**A. git diff** - 解析:`git diff`命令用于比较文件之间的差异。 3. 如果提示提交内容为空、不能提交,则最为合适的处理方式是: - 正确答案:*...

    代码段

    10. Proc和Lambda:这两个都是Ruby的匿名函数,Proc不检查参数数量,而Lambda会。例如,`compare = -&gt;(a, b) { a &lt;=&gt; b }`创建一个比较器。 通过理解和运用这些Ruby代码段,开发者可以更好地驾驭这门语言,提升编程...

    封禁日志:封禁日志,一个吉基主题

    在了解这个主题之前,我们先来熟悉一下Jekyll和CSS这两个关键概念。 Jekyll是一款静态站点生成器,由Ruby编写,它能够将文本格式的内容转换成静态HTML和CSS文件,便于部署在Web服务器上。Jekyll特别适合个人博客、...

    程序员开发代码编辑器 CodeLobster IDE Pro 1.9.0 中文多语免费版.zip

    就额外的工具而言,可以使用代码验证器检查任何错误,编辑代码片段并更改代码格式,按各种标准对文本进行排序,进行代码转换(例如HTML到PHP,7位编码到字符),并在两个并排窗格之间同步滚动。 这些只是 ...

    Java 9 api 中文版 JDK9 中文版

    2. **JShell(REPL)**:JShell是Java 9的交互式命令行工具,用于快速测试代码片段,类似于Python或Ruby等语言的REPL(Read-Eval-Print Loop)。这大大简化了开发过程中的代码调试和实验。 3. **改进的集合接口**:...

    sforce-jekyll:网页sforce的动态源

    4. **Salesforce API知识**:需要熟悉如何使用Salesforce的REST或SOAP API获取数据,以及如何处理JSON或XML响应。 5. **Git和GitHub**:sforce-jekyll通常会与GitHub集成,因此了解版本控制和如何在GitHub上托管项目...

    8种常用的Python工具

    - **Python Shell窗口**:提供了一个交互式的Python环境,方便用户直接运行代码片段。 - **自动补全**:当键入代码时,IDLE能够自动补全代码,提高编码效率。 - **语法高亮**:不同类型的代码用不同的颜色显示,...

    Sublime Text2功能体验1

    在文本操作方面,Sublime Text2提供了诸如Ctrl+Up/Down的单行滚动,Ctrl+J拼合两行,Ctrl+Shift+D复制当前行,以及Ctrl+/和Ctrl+Shift+/进行单行和块注释等功能。Ctrl+L用于选中当前行,Ctrl+D则用于选择相同文字块...

    ext6.0 高清带书签学习文档

    文档内容中提到的ExtJS组件,如“ExtJS61ExtJS2015123admin1$S”,很可能是错误地识别出的代码或注释部分,应当理解为ExtJS6.0的某种代码片段或标识。文中还提到了JavaScript,这是ExtJS框架构建在上的核心语言,...

    thordaff.github.io

    【标题】"thordaff.github.io" 是一个个人或组织在GitHub上托管的网页项目,通常用于展示个人作品、博客或者开源项目。这个项目可能是基于静态网站生成器,如Jekyll或Hugo,来构建的,因为GitHub Pages支持这些工具...

Global site tag (gtag.js) - Google Analytics