我們使用PyXB生成XML文件的庫提交給我們的上游付款處理器,簡化代碼看起來像這樣如何讓pyxb不生成xsi:type = string?
import pyxb.binding.datatypes as pyxbd
from . import schema
record = schema.Record(
Arg1='xxx',
Arg2='xxx',
)
record.Foo = pyxbd.string('bar')
print record.toDOM()
而生成的XML文檔看起來就像這樣
<?xml version="1.0" encoding="utf-8"?>
<Record Arg1="xxx" Arg2="xxx"
xmlns:ns1="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<Foo xsi:type="ns1:string">Bar</Foo>
<Record>
唐不知道爲什麼,但我們的上游處理器不喜歡任何元素的xsi:type="ns1:string"
屬性,所以它拒絕我們的請求。我的問題是爲什麼pyxb模式產生這個xsi:type
的東西?我能阻止它產生它嗎?
是的,我實際上通過向所有葉元素添加'xsi:type =「xsd:string」'解決了這個問題。然後重新生成模式。然後我可以分配字符串,而不需要傳遞'pyxbd.string'。我也嘗試了另一種解決方案,就是使用'xml.dom.minidom.Text',但仍然將這些元素視爲'anyType',很難訪問,因此我最終使用修改後的模式並且它可以工作。 – 2014-11-23 05:12:56