gpt4 book ai didi

python - 了解 Python 3 中的 XML 和 XSD 解析

转载 作者:行者123 更新时间:2023-12-05 06:43:24 25 4
gpt4 key购买 nike

所以我会问这个问题有点变态,因为我首先不确定是否可以问这个问题.. 开始吧,

我想使用我刚接触的 Python3 读取 XML 树。我使用以下方法相对轻松地完成了此操作:

xml.etree.ElementTree.parse(urllib.request.urlopen(url))

XML 流是不同的数据集,并且有一个可用的 XSD,我也以相同的方式对其进行了解析。现在,我的问题是我可以使用 XSD 架构创建解析器吗?我是 XML 的新手,但我发现了使用 XSD 生成解析器对象然后相应地读取 XML 的示例。但是,我找不到 Python3 中的等效项。

这是我在 Python2.X 中想要的东西:

schema = etree.XMLSchema(schema_root)
xmlparser = etree.XMLParser(schema=schema)

我不确定我的概念是否正确。也许这是一个 XML 问题而不是 python 问题,即,也许你只能根据模式验证 XML 而不是实际使用它来解析 XSD 的细节。有人帮忙解决这个问题吗?

最佳答案

xmlschema是一个 Python 模块,用于管理 XML 模式或验证 XSD 的 XML 实例。

使用 Python3 根据 XML 模式验证来自 URL 的 XML 文档的示例。

import requests
import xmlschema
import xml.etree.ElementTree as ET

# to make it simple use external XML Schema and create a local file from it to validate XML examples

xsd_url = "https://raw.githubusercontent.com/sissaschool/xmlschema/master/tests/test_cases/examples/collection/collection.xsd"

with open("test.xsd", "w", newline="") as out:
out.write(requests.get(xsd_url).text)
xsd = xmlschema.XMLSchema("test.xsd")

# XML #1 validates to the Schema
url1 = "https://raw.githubusercontent.com/sissaschool/xmlschema/master/tests/test_cases/examples/collection/collection.xml"
xt = ET.fromstring(requests.get(url1).text)
print("xml1 valid=", xsd.is_valid(xt), sep="")

# XML #2 with invalid structure
url2 = "https://raw.githubusercontent.com/sissaschool/xmlschema/master/tests/test_cases/examples/collection/collection-1_error.xml"
xt = ET.fromstring(requests.get(url2).text)
print("xml2 valid=", xsd.is_valid(xt), sep="")

输出:

xml1 valid=True
xml2 valid=False

关于python - 了解 Python 3 中的 XML 和 XSD 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com