我使用Python和requests
库来发送带有XML文件的POST
请求。我的XML文件如下所示:
property_name = """<wfs:Property>
<wfs:Name>Adm2_NAME</wfs:Name>
<wfs:Value>fff</wfs:Value>
</wfs:Property>"""
xml = """<wfs:Transaction service="WFS" version="1.0.0"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs">
<wfs:Update typeName="geonode:tjk_nhr_shockriskscore">
""" + property_name + """
<ogc:Filter>
<ogc:FeatureId fid="tjk_nhr_shockriskscore.2"/>
</ogc:Filter>
</wfs:Update>
</wfs:Transaction>"""
如您所见,有一个property_name
变量,它实际上是由函数生成的。在
现在,我通过连接XML字符串来手动附加property_name
变量。但是,由于我将有许多这样的变量,我需要找到一种方法将它们附加到正确的位置。在
使用Python进行此操作的正确方法是什么?是否有可用的库或推荐的技术来实现这一点?在
考虑一下转换XML文件的专用语言XSLT,将其他XML的一部分附加到主XML文件中。Python的第三方模块lxml,可以处理xslt1.0脚本。XSLT维护^{} 函数,允许跨同一目录或子目录中的文档进行查询。但是,为了运行这种方法,必须将较小的XML字符串保存到磁盘或文件中,以及XSLT脚本来处理跨文档处理。在
另一个重要的要求是较小的XML字符串必须在根标记
<wfs:Property xmlns:wfs="http://www.opengis.net/wfs">
中定义其命名空间,以便在输出到文件之前将其连接起来。要在XSLT中添加其他XML字符串转换的文件,请遵循属性例程并在xsl模板中添加一行<xsl:copy-of select="document('OtherXML.xml')">
,该行与指定的父节点匹配。在或者,仍然使用XSLT,您可以绕过
^{pr2}$document()
或将单个字符串保存到磁盘的任何需要。在这种方法中,只需将较小的XML字符串连接到XSLT的模板匹配中。在相关问题 更多 >
编程相关推荐