python对XML文档的良构性和有效性验证-程序员宅基地

技术标签: 文档  schema  exception  python  import  xml  

### 一 .XML文档的结构良好性验证

结构良好的xml文档,需要遵守下面这些规则:

1.所有开始标签必须有对应的结束标签

2.元素可以嵌套,但是不可以重叠

3.有且只能有一个根元素

4.属性值必须使用引号

5.一个元素不能有两个同样属性名字的属性

6.注释不能出现在标签内部

7.没有转义的" <" 或者" $"不能出现在元素和属性的字符中


### 二.如何检查XML文档是否是良构的

test.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <person age="18">
    <name>hzj</name>
    <sex>man</sex>
 </person>
 <person age="19" des="hello">
    <name>kiki</name>
    <sex>female</sex>
 </person>
</root>

方法:以ElementTree模块为例,直接使用parse方法。如果不报错,这表示该XML是良构的

#encoding=gbk
from xml.etree import ElementTree as ET
try:
    ET.parse('test.xml')
    print '这是一个良构的XML文档'
except Exception,e:
    print '这不是一个良构的XML文档'
    print '可能原因:',e
运行结果:

这是一个良构的XML文档
将根标签最后</root>,换成<root>

运行结果:

这不是
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yueguanghaidao/article/details/7266462

智能推荐

33activiti - 并行网关(parallelGateWay)-程序员宅基地

1.流程图2.部署流程定义+启动流程实例3.查询我的个人任务4.完成我的个人任务分析:一个流程中流程实例只有1个,执行对象有多个并行网关的功能是基于进入和外出的顺序流的:分支(fork): 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。汇聚(join): 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网...

C语言的属性:__attribute___c语言 __attribute__-程序员宅基地

1. 变量的属性详细内容参考:变量的属性注:1)_attribute_后面必须为两对括号:((…))2)属性关键字的前后也可加“_”,如aligned可为__aligned_1.1 对齐(aligned (alignment))指定变量或结构域的起始地址对齐(以字节为单位):int x __attribute__ ((aligned (16))) = 0; // 16字节对齐..._c语言 __attribute__

java 微信开放平台、公众平台获取 openid以及unionid_公众号api java unionid 测试账号-程序员宅基地

简要明了,不说废话,之前没弄过微信的东西,弄了一上午算是用烂代码跑通了。 测试框架我用的springMVC。 需要内网穿透的请下载natapp 官网地址https://natapp.cn/,使用教程:NATAPP1分钟快速新手图文教程 需要个微信公众号,本demo用的是测试公众号,访问地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=..._公众号api java unionid 测试账号

python超时重新请求_python 超时重试方法-程序员宅基地

在应用中,有时候会 依赖第三方模块执行方法,比如调用某模块的上传下载,数据库查询等操作的时候,如果出现网络问题或其他问题,可能有超时重新请求的情况;目前的解决方案有1. 信号量,但不支持window;2.多线程,但是 如果是大量的数据重复操作尝试,会出现线程管理混乱,开启上万个线程的问题;3.结合采用eventlet 和 retrying模块 (eventlet 原理尚需深入研究)下面的方法实现..._time_out_second

H.264 序列参数集(SPS)_视频编码sps-程序员宅基地

H.264 中的 SPS(Sequence Parameter Set)是一种参数集,用于描述视频序列的特征和配置信息。SPS 是在 H.264 视频流中的一个元数据单元,它包含了视频编码器的设置和视频序列的特性。_视频编码sps

目标检测学习-YOLO-v3-程序员宅基地

目标检测学习-YOLO-v3改进新的网络架构分类softmax改成logistic跨尺度的预测改进作者说自己玩了推特一年,没改进太多,不过也是有进步的,主要在三方面。新的网络架构这次作者参照了残差网络,构建了更加深的网络结构,充分发挥了3x3和1x1卷积的作用,叫做darknet53:分类softmax改成logistic为了适应一个框可能有多个类别,所以换成了二元交叉熵损失。跨尺...

随便推点

flask自带web服务器么,web服务器、WSGI跟Flask(等框架)之间的关系-程序员宅基地

之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或者 Django),这几者的关系一存存在疑惑。通过查阅了些资料,总算把它们的关系理清了。总括来说,客户端从发送一个 HTTP 请求到 Flask 处理请求,分别经过了 web服务器层,WSGI层,web框架层,这三个层次。不同的层次其作用也不同,下面简要介绍各层的作用。web服务器,web框架与WSGI的三层关系图1:we..._web框架、wsgi、web服务器图片

Koa入门(四)—— Koa使用JWT做权限认证-程序员宅基地

koa使用JWT做权限认证,mocha、supertest测试登录接口,需要认证的接口

XML字符串转字节流转BLOB_string类型的xml转字节流-程序员宅基地

object 转字节再转BLOB Object o = map.get(values.get(j)); byte[] bytes = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); ..._string类型的xml转字节流

java 隐式调用和显示调用_显示调用与隐式调用的区别-程序员宅基地

当我们在调用lei_显示调用与隐式调用的区别

unity资源加载 耗时瓶颈分析,Async Upload Pipeline和Background Loading Priority_unity browser加载耗时-程序员宅基地

unity资源加载模块,加载是否卡顿,等待耗时是否长久,资源加载和引用是否合理等都会直接影响 内存,CPU性能。下面直接说核心问题:核心问题:1.加载耗时瓶颈2.资源加载是否合理3.实例化操作是否合理4.Active/Deactive操作是否合理以下内容会就上面的核心问题进行分析:..._unity browser加载耗时

数据降维方法汇总_因变量降维-程序员宅基地

数据降维的应用:①降低数据的存储量;②加快机器学习的速度;③数据可视化数据降维的本质: 方差PCA(主成分分析)简介:principal component analysis,原理:对于一个未知的系统,我们假设它有n个参数。我们想要求出那些参数最重要,而把不重要的参数给抹掉,从而降低参数向量的维数。PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。算法过程: 1)对于一个_因变量降维

推荐文章

热门文章

相关标签