通过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
相关推荐
以下是对这两个语言的一些核心知识点的详细说明: **Python** 1. **基础语法**:Python 以其简洁易读的语法著称,如缩进替代大括号表示代码块,以及内置的丰富数据结构(如列表、元组、字典)。 2. **变量和数据...
等效XML 描述 问题 测试XML输出很困难: 由于序列化的可变性,比较文本输出非常困难。 属性顺序无关紧要。... 最常见的用例是比较两个Document实例。 当且仅当以下情况,node_1等效于node_2: node_1和nod
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 = ->(a, b) { a <=> b }`创建一个比较器。 通过理解和运用这些Ruby代码段,开发者可以更好地驾驭这门语言,提升编程...
在了解这个主题之前,我们先来熟悉一下Jekyll和CSS这两个关键概念。 Jekyll是一款静态站点生成器,由Ruby编写,它能够将文本格式的内容转换成静态HTML和CSS文件,便于部署在Web服务器上。Jekyll特别适合个人博客、...
就额外的工具而言,可以使用代码验证器检查任何错误,编辑代码片段并更改代码格式,按各种标准对文本进行排序,进行代码转换(例如HTML到PHP,7位编码到字符),并在两个并排窗格之间同步滚动。 这些只是 ...
2. **JShell(REPL)**:JShell是Java 9的交互式命令行工具,用于快速测试代码片段,类似于Python或Ruby等语言的REPL(Read-Eval-Print Loop)。这大大简化了开发过程中的代码调试和实验。 3. **改进的集合接口**:...
4. **Salesforce API知识**:需要熟悉如何使用Salesforce的REST或SOAP API获取数据,以及如何处理JSON或XML响应。 5. **Git和GitHub**:sforce-jekyll通常会与GitHub集成,因此了解版本控制和如何在GitHub上托管项目...
- **Python Shell窗口**:提供了一个交互式的Python环境,方便用户直接运行代码片段。 - **自动补全**:当键入代码时,IDLE能够自动补全代码,提高编码效率。 - **语法高亮**:不同类型的代码用不同的颜色显示,...
在文本操作方面,Sublime Text2提供了诸如Ctrl+Up/Down的单行滚动,Ctrl+J拼合两行,Ctrl+Shift+D复制当前行,以及Ctrl+/和Ctrl+Shift+/进行单行和块注释等功能。Ctrl+L用于选中当前行,Ctrl+D则用于选择相同文字块...
文档内容中提到的ExtJS组件,如“ExtJS61ExtJS2015123admin1$S”,很可能是错误地识别出的代码或注释部分,应当理解为ExtJS6.0的某种代码片段或标识。文中还提到了JavaScript,这是ExtJS框架构建在上的核心语言,...
【标题】"thordaff.github.io" 是一个个人或组织在GitHub上托管的网页项目,通常用于展示个人作品、博客或者开源项目。这个项目可能是基于静态网站生成器,如Jekyll或Hugo,来构建的,因为GitHub Pages支持这些工具...