Python生成的citygml文件验证失败,尽管与示例文件相同

时间:2015-12-28 10:58:43

标签: python xml lxml

这是两个citygml文件:

来自citygml网站的示例文件,手动对文件进行了一些更改(https://drive.google.com/file/d/0Bx7bUIyq-ZEWY3FRb1hTbEU0SGc/view?usp=sharing

我的python&生成的一个lxml代码试图重新创建示例文件(https://drive.google.com/file/d/0Bx7bUIyq-ZEWaU1tNU1Wc01XNW8/view?usp=sharing

当我用notepad ++打开2个文件并逐行浏览时,python生成的文件与示例文件相同,但是当我尝试使用citygml xsd验证python生成的文件时模式失败,而示例文件传递。为什么会这样,因为他们是身份 l,我做错了什么? (我是处理xml文件的新手)

这是我的python代码的片段,使用etree构建的xml文件(因为我无法发布两个以上的链接供您下载我的代码):

et = ElementTree(root) cityObjectMember = SubElement(root,'cityObjectMember') luse = SubElement(cityObjectMember, "{" + XMLNamespaces.luse+ "}" +'Landuse') luse.attrib["{" + XMLNamespaces.gml+ "}" +'id'] = 'ID_ground_texture'

提前致谢。

1 个答案:

答案 0 :(得分:0)

不要相信你的眼睛,让电脑比较文件:

$ diff -u0 landusetest_validated.gml landusetest_cnntbevalidated.gml 
--- landusetest_validated.gml   2015-12-28 14:33:34.437635671 +0100
+++ landusetest_cnntbevalidated.gml     2015-12-28 14:33:34.437635671 +0100
@@ -4,2 +4,2 @@
-    <luse:LandUse gml:id="ID_ground_texture">
-      <gml:name>Simple textured patch</gml:name>
+    <luse:Landuse gml:id="ID_ground_texture">
+      <gml:name>simple textured patch</gml:name>
@@ -26 +26 @@
-    </luse:LandUse>
+    </luse:Landuse>

案件确实很重要。 Landuse!= LandUse