代码之家  ›  专栏  ›  技术社区  ›  rouble

有效的xml正文能否在元素名称周围包含“<”和“>”转义字符

  •  0
  • rouble  · 技术社区  · 16 年前

    我的web服务正在从第三方接收xml,如下所示:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <SOAP-ENV:Body>
    &lt;Foo&gt;bar&lt;/Foo&gt;
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    

    我的jaxws web服务拒绝了这一点,并出现了一个解析错误。另外,如果我尝试使用soapui验证这个xml,它会说只有元素内容类型的Body不能有文本元素。

    我的问题是,xml有效吗?或者客户是否应该在不逃离<及>。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Zack Marrapese    15 年前

    这当然是有效的XML。然而,您的问题似乎是它是否符合SOAP协议,这是一个限制性更强的问题。

    在本例中,SOAP主体只是一个文本元素。我不是SOAP专家,但在我看到的所有SOAP示例中,主体中都有元素节点,而不仅仅是文本。还有SOAP建议( http://www.w3.org/TR/2000/NOTE-SOAP-20000508 )他说

    完全限定元素名“

    这确实意味着需要元素而不是文本。

        2
  •  1
  •   Chris Jones    16 年前

    或者,您可以用CDATA(字符数据)部分将整个字符串括起来,从而对其进行转义。CDATA部分以九个字符分隔符开始[CDATA[并以分隔符结尾]]:

      <![CDATA["Me, Myself & <I>"]]>
    

    http://xmmssc-www.star.le.ac.uk/SAS/xmmsas_20070308_1802/doc/param/node24.html