相关疑难解决方法(0)

Python:xml ElementTree(或lxml)中的命名空间

我想检索遗留的xml文件,进行操作并保存.

这是我的代码:

from xml.etree import cElementTree as ET
NS = "{http://www.somedomain.com/XI/Traffic/10}"

def fix_xml(filename):
    f = ET.parse(filename)
    root = f.getroot()
    eventlist = root.findall("%(ns)Event" % {'ns':NS })
    xpath = "%(ns)sEventDetail/%(ns)sEventDescription" % {'ns':NS }
    for event in eventlist:
        desc = event.find(xpath)
        desc.text = desc.text.upper() # do some editting to the text.

    ET.ElementTree(root, nsmap=NS).write("out.xml", encoding="utf-8")


shorten_xml("test.xml")
Run Code Online (Sandbox Code Playgroud)

我加载的文件包含:

xmlns="http://www.somedomain.com/XI/Traffic/10"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.somedomain.com/XI/Traffic/10 10.xds"
Run Code Online (Sandbox Code Playgroud)

在根标签处.

我有以下与命名空间相关的问题:

  • 正如您所看到的,对于每个标记调用,我都在开始时给命名空间提供一个孩子.
  • 生成的xml文件<?xml version="1.0" encoding="utf-8"?>在开头没有.
  • 输出中的标签包含这样的内容,<ns0:eventDescription>而我需要输出作为原始输出<eventDescription>,在开头没有命名空间.

这些如何解决?

python xml namespaces elementtree

6
推荐指数
1
解决办法
2万
查看次数

我如何使用QName(python xml.etree.ElementTree?)

我已经对QName做了相当多的阅读,但我找不到任何关于如何使用它的好例子.有人能给我一个简单的例子来说明如何使用QName并解释它将用于什么上下文?

python xml elementtree qnames xml.etree

5
推荐指数
1
解决办法
2416
查看次数

lxml xsi:schemaLocation名称空间URI验证问题

我正在尝试lxml.etree重现此处找到的CDA快速入门指南中的CDA示例.

特别是,我遇到了尝试重新创建此元素的命名空间问题.

<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:mif="urn:hl7-org:v3/mif" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd">
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码如下

root = etree.Element('ClinicalDocument',
                    nsmap={None: 'urn:hl7-org:v3',
                           'mif': 'urn:hl7-org:v3/mif',
                           'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
                           '{http://www.w3.org/2001/XMLSchema-instance}schemaLocation': 'urn:hl7-org:v3 CDA.xsd'})
Run Code Online (Sandbox Code Playgroud)

问题在于schemaLocation进入nsmap.lxml似乎试图验证该值并给出错误

ValueError: Invalid namespace URI u'urn:hl7-org:v3 CDA.xsd'
Run Code Online (Sandbox Code Playgroud)

我是否schemaLocation错误地指定了值?有没有办法强制lxml接受任何字符串值?或者示例中的值是否只是一个占位符,我应该用其他东西替换?

python xml lxml xml-namespaces cda

4
推荐指数
1
解决办法
1657
查看次数

标签 统计

python ×3

xml ×3

elementtree ×2

cda ×1

lxml ×1

namespaces ×1

qnames ×1

xml-namespaces ×1

xml.etree ×1