`
pumaboyd
  • 浏览: 249716 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Python学习笔记-XML大文件的XSD验证方法

阅读更多

先说说需求,因为和客户合作,对方要求按规定的XML格式(通过XML Schema)来提供数据。本身XML验证没什么问题的,但是当XML的文件很大时,我们现在是100M左右。你如何去确认生成的XML是否符合XSD文件的定义呢。用人眼睛去看,这可是几十万条数据,肯定只能通过XML自身的验证机制来处理了。
XML的格式验证方法就这几个,如果你的文件只有几M,这个可以通过XMLSPY、XMLPAD,这些工具都可以验证。但这个100M的文件,这些工具都没办法打开。
对方公司是linux的,linux有xmllint –schema *.xsd *.xml > /dev/null 可以用来验证。郁闷的是我用Windows,没办法就只能自己写代码了。

发现Python2.5没有库支持XML Schema。只能找第三方的,最后找到的就是这个lxml(辛苦的,花了两天时间折腾这个)
1:下载地址http://codespeak.net/lxml/
2:直接提供验代码:
#!/usr/bin/env python
#coding=gb2312
from lxml import etree
import timeit

def CheckXML():
xmlschema_doc = etree.parse(”local_feed.xsd.xml”)
xmlschema = etree.XMLSchema(xmlschema_doc)
doc = etree.parse(”google-local0.xml”)
print xmlschema.validate(doc)
print >> open(”log.txt”,”w”), xmlschema.error_log

if __name__ ==’__main__’:
print ’start…’
t = timeit.Timer(’CheckXML()’,'from __main__ import CheckXML’)
print t.repeat(1,1)
print ‘end. any key exit…’
input()

Tips:

  1. timeit 传说中的Python自备电池。但觉得有些不是很好用,下次再具体说一下。
  2. print >> 输出重定向。很方便直接将错误保存成文件
  3. 还有就是lxml的这个Module的使用啦。这个module貌似比较强大。python官方的下载也是最高的,以后再进一步学习吧。
  4. 用C#也写了一个同样的,发现C#大概不到60s,但lxml的方式要133s,liunx没具体统计,但也慢的。这里只是说一下实际情况,不讨论原因。
分享到:
评论

相关推荐

    spring-beans-4.2xsd 文件下载

    Spring默认在启动时是要加载XSD文件来验证xml文件的,所以如果有的时候断网了,或者一些开源软件切换域名,那么就很容易碰到应用启动不了。我记得当时Oracle收购Sun公司时,遇到过这个情况。为了防止这种情况,...

    根据XML生成xsd

    XML生成XSD xml生成xsd 生成xsd...java -jar trang.jar xml文件绝对路径 要生成的xsd文件绝对路径 例如在当前目录有文件aaa.xml,需要生成xsd文件名为aaa,并存放在当前目录: java -jar trang.jar aaa.xml aaa.xsd

    xml文件转xsd文件

    4. **验证XML文件**:使用XSD文件对XML文件进行验证,确保XML符合XSD定义的规则。可以使用XML解析器或者命令行工具如`xmllint`来进行验证。 5. **生成Java类**:利用JAXB或其他类似的工具,如Apache CXF的XJC,根据...

    xml 文件与xsd文件的转化以及xsd验证xml的合法性

    XML(Extensible Markup Language)是一种用于标记...理解和掌握XML与XSD之间的转化和验证方法,对于处理和维护基于XML的数据至关重要。在实际编程中,合理运用这些知识可以提高代码质量,减少因数据错误导致的问题。

    关于Spring的spring-beans-xsd和tx-xsd aop-xsd等

    这些XML配置文件依赖于特定的XSD(XML Schema Definition)文件来提供语法验证和代码编辑器的自动提示功能。在给定的压缩包中,包含了`spring-beans-3.0.xsd`、`spring-context-3.0.xsd`、`spring-aop-3.0.xsd`和`...

    spring-aop-3.0.xsd spring-beans-3.0 spring-context-3.0.xsd spring-mvc-3.1.xsd

    `spring-context-3.0.xsd` 文件包含了在上下文环境中配置的各种元素,如消息源、事件监听器、AOP 配置、bean 的工厂方法等。这个文件对于实现高度自定义的 Spring 应用程序非常重要。 4. **spring-mvc-3.1.xsd**: ...

    XML生成XSD的方法

    ### XML生成XSD的方法 #### 一、引言 在处理结构化数据时,XML(可扩展标记语言)因其灵活性而被广泛采用。为了确保XML文档遵循特定的格式和规则,通常会用到XSD(XML Schema Definition)来定义XML文档的结构。...

    spring-beans-3.0.xsd

    `spring-beans`的配置文件通常以`.xsd`为后缀,这些文件定义了XML Schema,用于验证Spring配置文件的语法和结构。本文将深入探讨`spring-beans-3.0.xsd`和`spring-beans-3.1.xsd`这两个版本的变更,以及它们在Spring...

    C#验证xml是否满足xsd规则

    我们可以通过Add方法添加XSD文件,然后使用Validate方法对XML文档进行验证。 - `XmlReaderSettings`和`XmlReader`:`System.Xml.XmlReaderSettings`类允许设置验证选项,如启用或禁用验证、指定XSD集等。结合`...

    心电图HL7-XML文件

    HL7-XML文件是这种标准的一个具体实现,它将心电图数据转化为结构化的XML(Extensible Markup Language)文档,便于在不同医疗设备和系统之间共享和解析。 XML是一种标记语言,通过标签来定义数据结构和内容。在HL7...

    spring-beans-1.3.xsd

    spring-beans-4.3.xsd spring-beans-4.3.xsd spring-beans-4.3.xsd spring-beans-4.3.xsd

    XML验证器(XSD验证XML)

    然后,你可以加载XML文档和对应的XSD模式,通过调用相应的验证方法进行验证。如果XML文档符合XSD模式,验证器将返回成功;否则,它会提供错误信息,指出不符合的地方。 在提供的链接中,,博主详细介绍了如何在...

    spring-tool-4.2.xsd.zip

    描述中提到的"压缩包内含有该文件所对应的URI",这可能指的是Spring框架中用于验证XML配置文件的XSD文件的URI。在开发环境中,通常需要通过网络访问这些URI来校验XML配置文件。然而,当网络不稳定或速度较慢时,本地...

    spring-context-4.2.xsd.zip

    在Spring框架中,XML配置文件是声明式配置的主要方式,而XSD(XML Schema Definition)文件则定义了这些XML配置文件的结构和约束。`spring-context-4.2.xsd`是Spring 4.2版本的Context模块的XSD文件,它包含了对...

    验证XSD和XML文件的小工具

    验证xml文件与xsd是否匹配

    雷赛2DM3-EC XML文件

    同时,XML Schema(XSD)文件可以用来定义和验证XML文件的结构,确保数据的正确性。 总结来说,雷赛2DM3-EC XML文件是雷赛智能伺服驱动器的配置文件,使用XML格式存储参数和指令,便于设备管理、运动控制和通讯。...

    python-junit-xml:一个用于创建JUnit XML测试结果文档的Python模块,可以由诸如Jenkins之类的工具读取。 如果您使用的是用Python编写的测试工具或测试套件,并且想利用Jenkins的漂亮图形和测试报告功能,则该模块将使您生成XML测试报告。

    由于我找不到确切的Jenkins JUnit XSD,因此由该模块创建的XML文档支持基于Google搜索和Jenkins JUnit XML阅读器源代码的架构。 如果某些功能无法正常运行,请提交错误报告。 对于竹子来说情况是一样的。 安装 使用...

    xamarin布局xml xsd文件

    `android-layout-xml.xsd` 和 `schemas.android.com.apk.res.android.xsd` 文件是XML架构文件,它们在Xamarin中起到了至关重要的作用,为开发者提供了XML布局文件的结构和验证规则。 首先,`android-layout-xml.xsd...

    spring-cache.xsd+spring-encache.xsd

    在XML配置文件中,引入XSD文件至关重要,因为它能确保XML解析器理解并验证配置中的元素和属性。如果缺少了这些引用,XML编辑器或IDE可能无法识别自定义标签,从而导致解析错误或警告。 标签"spring-cache xml xsd...

    vtd-xml XML解析工具

    VTD-XML还支持XML Schema(XSD)验证,这使得开发者能够在解析XML时检查其是否符合预定义的模式,从而确保数据的正确性和一致性。此外,VTD-XML还可以与Java DOM进行交互,允许开发者在VTD-XML的优势和DOM的灵活性...

Global site tag (gtag.js) - Google Analytics