[英]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.