Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pyXB创建ReqIf XML文档时包含XHTML内容_Python_Xml_Xhtml_Pyxb_Reqif - Fatal编程技术网

Python 使用pyXB创建ReqIf XML文档时包含XHTML内容

Python 使用pyXB创建ReqIf XML文档时包含XHTML内容,python,xml,xhtml,pyxb,reqif,Python,Xml,Xhtml,Pyxb,Reqif,一点背景:在Sphinx需求管理插件的范围内,我正在研究导出ReqIF XML内容的方法。我找到了pyreqif,但发现它目前还不足以满足我们的需要 我决定研究一下pyXB生成的Reqif绑定,因为pyXB可以完成所有与XML之间的转换工作,我只需要担心添加一些方便的函数/类 可在以下位置找到该项目: 到目前为止,一切进展顺利:我已经成功地创建了所有对象的实例,它们很好地结合在一起,形成了一个xml文档。我唯一遇到的问题是XHTML内容的创建。理想情况下,我希望获取现有的html内容并将其插入到

一点背景:在Sphinx需求管理插件的范围内,我正在研究导出ReqIF XML内容的方法。我找到了pyreqif,但发现它目前还不足以满足我们的需要

我决定研究一下pyXB生成的Reqif绑定,因为pyXB可以完成所有与XML之间的转换工作,我只需要担心添加一些方便的函数/类

可在以下位置找到该项目:

到目前为止,一切进展顺利:我已经成功地创建了所有对象的实例,它们很好地结合在一起,形成了一个xml文档。我唯一遇到的问题是XHTML内容的创建。理想情况下,我希望获取现有的html内容并将其插入到树中。 naieve的这种做法导致xml不安全字符被转义,因此无法工作

以下是我的一些尝试:

尝试1:将xml作为字符串传递给XHTML_内容构造函数
xml\u字符串=“”
XY块适配器应以双向方式将通信转换为TMN块,并支持TMN块的所有功能。
''' att\u value\u xhtml=ATTRIBUTE\u value\u xhtml(定义=text\u属性,值=xhtml\u内容(div=xml\u字符串))
结果:转义的XML内容:
div
XY块适配器应以双向方式将通信转换为TMN块,并支持TMN块的所有功能。br/
/div
尝试2:将xml作为字符串传递给XHTML_内容构造函数,并设置“_from_xml标志”
xml\u字符串=“”
XY块适配器应以双向方式将通信转换为TMN块,并支持TMN块的所有功能。
''' att\u value\u xhtml=ATTRIBUTE\u value\u xhtml(定义=text\u属性,值=xhtml\u内容(xml\u字符串,\u from\u xml=True))
结果:pyXB异常:
回溯(最近一次呼叫最后一次):
文件“examples/export_test.py”,第105行,在
att\u value\u xhtml=ATTRIBUTE\u value\u xhtml(定义=text\u属性,值=xhtml\u内容(xml\u字符串,\u from\u xml=True))
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py”,第2127行,在__
extend(args,_from_xml=from_xml,_location=location)
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py”,第2612行,扩展
[为值列表中的_v添加自附加(_v,**kw)]
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site packages/pyxb/binding/basis.py”,第2612行,在
[为值列表中的_v添加自附加(_v,**kw)]
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site packages/pyxb/binding/basis.py”,第2588行,在附录中
raise pyxb.MixedContentError(自身、值、位置)
pyxb.exceptions_u2;.MixedContentError:无效的非元素内容
尝试3-将xml作为字符串传递给xhtml_div_类型构造函数,并带有“_from_xml flag set”,然后将该类分配给div成员。
xml\u字符串=“”
XY块适配器应以双向方式将通信转换为TMN块,并支持TMN块的所有功能。
''' att\u value\u xhtml=ATTRIBUTE\u value\u xhtml(定义=text\u属性,值=xhtml\u内容(div=xhtml\u div\u类型(xml\u字符串,\u from\u xml=True)))
结果:转义的XML内容:
div
XY块适配器应以双向方式将通信转换为TMN块,并支持TMN块的所有功能。br/
/div
尝试4-首先将字符串转换为dom并在构造函数中使用它
xml\u字符串=“”
XY块适配器应以双向方式将通信转换为TMN块,并支持TMN块的所有功能。
''' dom_content=xml.dom.minidom.parseString('Some data Some more data') att\u value\u xhtml=ATTRIBUTE\u value\u xhtml(定义=text\u属性,值=xhtml\u内容(div=xhtml\u div\u类型(\u dom\u节点=dom\u内容)))
结果:pyXB异常:
无法将[UNAVAILABLE]处的DOM节点空转换为绑定
回溯(最近一次呼叫最后一次):
文件“examples/export_test.py”,第130行,在
att\u value\u xhtml=ATTRIBUTE\u value\u xhtml(定义=text\u属性,值=xhtml\u内容(div=xhtml\u div\u类型(\u dom\u节点=dom\u内容)))
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py”,第2133行,在__
extend(dom_node.childNodes[:],fallback_名称空间)
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py”,第2612行,扩展
[为值列表中的_v添加自附加(_v,**kw)]
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site packages/pyxb/binding/basis.py”,第2612行,在
[为值列表中的_v添加自附加(_v,**kw)]
文件“/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site packages/pyxb/binding/basis.py”,第2567行,在附录中
raise pyxb.UnrecognedContentError(自我、自我、自动配置、值、位置)
pyxb.exceptions\uU4.UnrecognizedContentError:无效内容为空(预期{http://www.w3.org/1999/xhtml}h1或{http://www.w3.org/1999/xhtml}h2或。。。
处理xhtml内容的正确方法是什么

 Traceback (most recent call last):
   File "examples/export_test.py", line 105, in <module>
     att_value_xhtml = ATTRIBUTE_VALUE_XHTML(definition=text_attribute, THE_VALUE=XHTML_CONTENT(xml_string, _from_xml=True))
   File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2127, in __init__
     self.extend(args, _from_xml=from_xml, _location=location)
   File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2612, in extend
     [ self.append(_v, **kw) for _v in value_list ]
   File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2612, in <listcomp>
     [ self.append(_v, **kw) for _v in value_list ]
   File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2588, in append
     raise pyxb.MixedContentError(self, value, location)
 pyxb.exceptions_.MixedContentError: Invalid non-element content
Unable to convert DOM node empty at [UNAVAILABLE] to binding
Traceback (most recent call last):
  File "examples/export_test.py", line 130, in <module>
    att_value_xhtml = ATTRIBUTE_VALUE_XHTML(definition=text_attribute, THE_VALUE=XHTML_CONTENT(div=xhtml_div_type(_dom_node=dom_content)))
  File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2133, in __init__
    self.extend(dom_node.childNodes[:], fallback_namespace)
  File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2612, in extend
    [ self.append(_v, **kw) for _v in value_list ]
  File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2612, in <listcomp>
    [ self.append(_v, **kw) for _v in value_list ]
  File "/home/bvn/.pyenv/versions/3.6.10/lib/python3.6/site-packages/pyxb/binding/basis.py", line 2567, in append
    raise pyxb.UnrecognizedContentError(self, self.__automatonConfiguration, value, location)
pyxb.exceptions_.UnrecognizedContentError: Invalid content empty (expect {http://www.w3.org/1999/xhtml}h1 or {http://www.w3.org/1999/xhtml}h2 or ...