---更新3: 我已经完成了将所需数据更新到xml文件中的脚本,但是下面的代码将从写入的文件中删除。为什么会这样?我怎样才能更换它?在
<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='ANZMeta.xsl'?>
现行工作规范(上述问题除外)。在
^{pr2}$---更新1&2: 多亏了Aleyna,我有了下面的基本代码
import os, xml, arcpy, shutil
from xml.etree import ElementTree as et
CodeString=['northbc','southbc', '<nondig><formname>']
nondig='nondigital'
path=os.getcwd()
arcpy.env.workspace = path
xmlfile = path+"\\test.xml"
FileList = arcpy.ListFeatureClasses()
FileCount = len(FileList)
for File in FileList:
FileDesc_obj = arcpy.Describe(File)
FileNm=FileDesc_obj.file
newMetaFile=FileNm+"_Metadata.xml"
shutil.copy2('L:\Data_Admin\QA\Metadata_python_toolset\Master_Metadata.xml', newMetaFile)
tree=et.parse(newMetaFile)
for node in tree.findall('.//northbc'):
node.text = str(FileDesc_obj.extent.YMax)
for node in tree.findall('.//southbc'):
node.text = str(FileDesc_obj.extent.YMin)
for node in tree.findall('.//westbc'):
node.text = str(FileDesc_obj.extent.XMin)
for node in tree.findall('.//eastbc'):
node.text = str(FileDesc_obj.extent.XMax)
for node in tree.findall('.//native/nondig/formname'):
node.text = nondig
tree.write(newMetaFile)
就像处理xml代码一样
- <spdom>
<keyword thesaurus="">GDA94</keyword>
<keyword thesaurus="">GRS80</keyword>
<keyword thesaurus="">Transverse Mercator</keyword>
<keyword thesaurus="">Zone 55 (144E - 150E)</keyword>
</spdom>
因为关键字thes…在<spdom>
中不是唯一的,我们可以根据来自
FileDesc_obj.spatialReference.name
u'GCS_GDA_1994'
---原帖---
我正在建立一个程序来从我们库中的空间文件生成xml元数据文件。我已经创建了从文件中提取所需的空间和属性数据的脚本,并创建了基于shp和文本文件的文件索引,但现在我想将此信息写入到基本元数据xml文件中,该文件通过替换公共/静态元素保存的值写入anzlic标准。。。在
例如,我想替换下面的xml代码
<northbc>8097970</northbc>
<southbc>8078568</southbc>
与
<northbc> GeneratedValue_[desc.extent.XMax] /<northbc>
<southbc> GeneratedValue_[desc.extent.XMax] </southbc>
问题是,和之间的数字/值显然不一样。在
类似于<title>, <nondig><formname>
等xml标记,在后一个示例中,必须同时搜索两个标记,因为formname多次出现(不是唯一的)。在
我使用的是Python正则表达式手册[here][1]
如果处理的是有效的XML,那么使用XPath查找感兴趣的节点,使用elementtreeapi来操作节点。在
例如,您的xpath可能是“//northbc”,您只需替换其中的文本节点。在
请参见http://docs.python.org/library/xml.etree.elementtree.html和http://pypi.python.org/pypi/lxml/2.2.8,了解两个不同的库,它们将帮助您完成这项工作。在google上搜索XPath,并查看w3c教程以获得一个不错的XPath简介(我显然不能在一篇文章中发布超过两个链接,否则我也会链接它)
使用上面给定的标签:
这里是XPATH//northbc返回XML文档中的所有northbc节点。您可以根据需要轻松地定制代码。在
我可能在这里说的很明显,但是您考虑过使用DOM树来解析和操作XML吗?在
相关问题 更多 >
编程相关推荐