先说说需求,因为和客户合作,对方要求按规定的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:
- timeit 传说中的Python自备电池。但觉得有些不是很好用,下次再具体说一下。
- print >> 输出重定向。很方便直接将错误保存成文件
- 还有就是lxml的这个Module的使用啦。这个module貌似比较强大。python官方的下载也是最高的,以后再进一步学习吧。
- 用C#也写了一个同样的,发现C#大概不到60s,但lxml的方式要133s,liunx没具体统计,但也慢的。这里只是说一下实际情况,不讨论原因。
分享到:
相关推荐
Spring默认在启动时是要加载XSD文件来验证xml文件的,所以如果有的时候断网了,或者一些开源软件切换域名,那么就很容易碰到应用启动不了。我记得当时Oracle收购Sun公司时,遇到过这个情况。为了防止这种情况,...
xml 文件与xsd文件的转化以及xsd验证xml的合法性
spring-beans-4.3.xsd spring-beans-4.3.xsd spring-beans-4.3.xsd spring-beans-4.3.xsd
spring-beans-3.0.xsd
xml文件转xsd文件,方便生成java类
由于我找不到确切的Jenkins JUnit XSD,因此由该模块创建的XML文档支持基于Google搜索和Jenkins JUnit XML阅读器源代码的架构。 如果某些功能无法正常运行,请提交错误报告。 对于竹子来说情况是一样的。 安装 使用...
spring-aop-3.0.xsd 这个下载之后可以直接放在eclipese的xml的catalog中配置,已到达eclipse可以自动提示xml的功能
spring-context-3.2.xsd
验证xml文件与xsd是否匹配
XML生成XSD的方法
xml生成xsd 使用方法:java -jar trang.jar EchoRequest.xml EchoRequest.xsd
用于编写spring的xml文件时的自动提示
spring-beans-3.2.xsd
这是一个简单的python脚本,如果您有xsd,可以帮助您生成一些xml。 它使用库解析给定的架构文档,然后填充一些硬编码的值。 请检查以下示例。 XSD <? xml version = " 1.0 " encoding = " utf-8 " ?> ...
XML生成XSD xml生成xsd 生成xsd...java -jar trang.jar xml文件绝对路径 要生成的xsd文件绝对路径 例如在当前目录有文件aaa.xml,需要生成xsd文件名为aaa,并存放在当前目录: java -jar trang.jar aaa.xml aaa.xsd
C#雁阵xml是否满足xsd规则
XML验证器(XSD验证XML)附Delphi7源码 http://blog.csdn.net/akof1314/article/details/6860264 有介绍
在vs2005里,用vc实现xsd对xml的检测
内含spring-aop-4.0.xsd、spring-beans-4.0.xsd、spring-context-4.0.xsd、spring-mvc-4.0.xsd、spring-tool-4.0.xsd、spring-tx-4.0.xsd、spring-util-4.0.xsd,在xml中引入相应xsd文件,便可以自动提示