SOAP :: Data :: Builder,如果没有提供值,则删除xsi:nil ="true"

xen*_*ide 5 xml perl soap

如果我写这个SOAP :: Data :: Builder代码(其中$sb是一个SOAP :: Data :: Builder对象)

    $sb->add_elem(
        attributes => { run => 'true' },
        name       => 'ccAuthService',
#       value      => ' ', # hack to prevent cs side unparseable xml
    );
Run Code Online (Sandbox Code Playgroud)

它会生成以下内容

<ccAuthService xsi:nil="true" run="true" />
Run Code Online (Sandbox Code Playgroud)

这是不可接受的,因为xsi:nil会在接收端引起问题.但是,如果我取消注释注释掉的行,我会得到

<ccAuthService run="true"> </ccAuthService>
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这是有效的,所以这是一个解决方法.但我最终想要的是

<ccAuthService run="true" />
Run Code Online (Sandbox Code Playgroud)

我知道哪些有用,我只是无法弄清楚如何生成它.

P S*_*ved 1

您可以按原样保留 SOAP 中的 XML 生成,解析使用解析器(例如在发送端)生成的代码XML::Twig,并使用相同的库将其打印出来,应用在接收端成功处理它所需的选项。