ABAP IXML删除多个空白
创建ixml元素并将值设置为包含ABAP IXML删除多个空白,xml,abap,Xml,Abap,创建ixml元素并将值设置为包含12345 67890的文本类型cstring时,空格将呈现为单个空格12345 67890。如何阻止ABAP合并我的空间 DATA(li_doc) = cl_ixml=>create( )->create_document( ). " INITIALIZE XML DATA(li_new_node) = li_doc->create_element_ns( name = |test| prefix = |foo| ). li_ne
12345 67890
的文本类型cstring时,空格将呈现为单个空格12345 67890
。如何阻止ABAP合并我的空间
DATA(li_doc) = cl_ixml=>create( )->create_document( ).
" INITIALIZE XML
DATA(li_new_node) = li_doc->create_element_ns( name = |test| prefix = |foo| ).
li_new_node->append_child( li_doc->create_text( |12345 67890| ) ).
li_doc->append_child( li_new_node ).
" RENDER XML
DATA: l_xml_string TYPE string.
DATA(li_ixml) = cl_ixml=>create( ).
DATA(li_streamfactory) = li_ixml->create_stream_factory( ).
DATA(li_ostream) = li_streamfactory->create_ostream_cstring( l_xml_string ).
DATA(li_renderer) = li_ixml->create_renderer( ostream = li_ostream document = li_doc ).
li_renderer->set_normalizing( abap_false ).
li_renderer->render( ).
WRITE l_xml_string.
正如您所说,您的代码没有任何问题,空格不会像预期的那样被删除。请注意,当您 但正如我看到的,您没有看到,也许未来的访问者在iXML中会遇到“删除空白”的问题,所以我解释了一个可能发生这种情况的案例 当解析XML字符串时,空格可能会被删除,而不是在渲染时。例如:
DATA: l_xml_string TYPE string.
DATA(li_ixml) = cl_ixml=>create( ).
DATA(li_doc) = li_ixml->create_document( ).
DATA(li_streamfactory) = li_ixml->create_stream_factory( ).
" INITIALIZE XML
l_xml_string = '<?xml version="1.0"?><foo:test> 12345 67890 </foo:test>'.
" PARSE XML
DATA(li_Istream) = li_streamfactory->create_istream_cstring( l_xml_string ).
DATA(li_parser) = li_ixml->create_parser( document = li_doc istream = li_istream stream_factory = li_streamfactory ).
li_parser->parse( ).
l_xml_string = li_doc->get_root_element( )->get_value( ).
WRITE : '=>' NO-GAP, l_xml_string NO-GAP, '<='.
结果的前导空格和尾随空格保持不变:
=> 12345 67890 <=
=>1234567890如何停止
这取决于您如何创建XML。给我们看看代码好吧我没做任何改动,但现在可以用了。有点(不)幸运。cstring(| 12345 67890 |)
我相信您在这里使用的是var,而不是literal,而且这个var似乎是char类型,而不是string。这就是它现在起作用的原因
li_parser->add_preserve_space_element( ).
=> 12345 67890 <=