Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写用于分析不同XML模式和转换XML文件的python脚本?_Python_Xml_Xsd - Fatal编程技术网

如何编写用于分析不同XML模式和转换XML文件的python脚本?

如何编写用于分析不同XML模式和转换XML文件的python脚本?,python,xml,xsd,Python,Xml,Xsd,我经常使用某种类型的XML文档。每隔几个月就会发布此XML文档的新模式。新模式通常会在XML文档中添加或删除字段 目前,我必须将至少一些XML文档从旧版本转换为新版本。我是手工做的,但显然这并不理想 我比较擅长编写Python脚本。但是,我在使用Python处理XML方面的经验很少 我想知道编写一个通用python脚本有多困难,该脚本分析了这些XML文档的新旧模式,确定了哪些字段被删除,哪些字段被添加,并将旧文档版本转换为新版本 如果这对一个掌握初级和中级Python技能的人来说是可能的/不是太

我经常使用某种类型的XML文档。每隔几个月就会发布此XML文档的新模式。新模式通常会在XML文档中添加或删除字段

目前,我必须将至少一些XML文档从旧版本转换为新版本。我是手工做的,但显然这并不理想

我比较擅长编写Python脚本。但是,我在使用Python处理XML方面的经验很少

我想知道编写一个通用python脚本有多困难,该脚本分析了这些XML文档的新旧模式,确定了哪些字段被删除,哪些字段被添加,并将旧文档版本转换为新版本

如果这对一个掌握初级和中级Python技能的人来说是可能的/不是太难的,有人能告诉我应该从哪里开始吗

我刚刚阅读了《深入Python》的XML一章。似乎lxml库就是我想要使用的库?在使用模式时,它是否非常强大


我应该从哪里开始?

从标准库中的ElementTree开始。我担心这非常困难,甚至不可能,除非在可能的架构更改中有某种规则/限制。如果您有一个具有foo属性的模式,然后是一个新版本的模式,其中这个属性被重命名为bar1,还有一个新属性bar2-比较模式,你会看到有一个属性foo,现在有两个属性bar1和bar2-但无法知道第一个只是旧属性。信不信由你,这不是一个问题我使用的主要问题。我处理的XML文档仅用于测试系统,并最终处理它们。如果foo->bar,那么如果程序删除foo并创建bar属性就可以了,即使这意味着原始文档中foo的值在转换过程中丢失了。这个程序背后的想法是批量处理一系列手动转换。如果某些数据丢失,这不是问题,因为它是测试数据。基本上,我需要脚本来完成这项工作:将模式中定义的任何新必填字段添加到XML文档中,并根据新模式删除或注释掉任何不再存在的字段。如果需要进行一些手动调整,以使XML文档中的数据符合系统的需要,那么就可以了。只要添加和删除字段的非平凡工作可以由脚本完成。让我知道你对此的看法/如果这是可能的。是的,这应该是可能的-仍然不容易。您需要做的基本上是验证这些XML文件,根据验证发现的错误添加/删除属性和元素。最好的办法是有一个现有的验证库,它在某种程度上是“可插拔的”,这样您就可以添加自己的代码来处理错误——但不知道是否存在这种情况。