簡體   English   中英

使用xml.etree,如何創建命名空間屬性“ XML:lang”?

[英]With xml.etree, How to I create namespaced attribute “XML:lang”?

我正在嘗試使用xml.etree為TMX格式創建一個簡單的xml轉換器。 如何創建如下所示的language屬性: xml:lang

我試過的

    root = et.Element("tmx")
    body = et.SubElement(root, "body")
    tu = et.SubElement(body, "tu")
    tuv_en = et.SubElement(tu, "tuv", xml:lang="en")  # 'xml:lang' gets error
    tuv_zh = et.SubElement(tu, "tuv", xml:lang="zh")
    seg_en = et.SubElement(tuv_en, "segment").text="en text."
    seg_zh = et.SubElement(tuv_zh, "segment").text="zh text."
    tree = et.ElementTree(root)
    tree.write( file + ".xml")

我想要的是:

<tmx>
  <body>
    <tu>
      <tuv xml:lang="en">
        <seg>en text.</seg>
      </tuv>
      <tuv xml:lang="zh">
        <seg>zh text.</seg>
      </tuv>
    </tu>
  </body>
</tmx>

設置attrib關鍵字參數:

import xml.etree.ElementTree as et

root = et.Element("tmx")
body = et.SubElement(root, "body")

tu = et.SubElement(body, "tu")
et.SubElement(tu, "tuv", attrib={"xml:lang": "en"})
et.SubElement(tu, "tuv", attrib={"xml:lang": "zh"})

print(et.tostring(body))

這將產生:

<body><tu><tuv xml:lang="en" /><tuv xml:lang="zh" /></tu></body>

如果您具有現有的lxml etree dom並且不能使用ElementTree,則可以這樣設置屬性:

from lxml import etree

element = etree.Element("element")

# This won't work: element.set("xml:lang", "en")
element.set("{http://www.w3.org/XML/1998/namespace}lang", "en")

print(etree.tostring(element))

結果:

<element xml:lang="en"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM