2010-08-17 70 views
0

我使用System.Xml.XmlElement作为在WCF中发送XML数据的参数。这通常是在WCF中发送XML数据的互操作方式,例如,如果我从WCF客户端发送它,PHP或Java Web服务将理解它?我读过,我不应该直接在WCF中以字符串的形式发送XML。在WCF中发送XML数据的可互操作方式?

在由WCF生成的WSDL中的XmlElement对象映射到xsd:以下列方式的任何元素:

<xsd:element name="SendXMLData"> 
<xsd:complexType> 
<xsd:sequence> 
<xsd:element minOccurs="0" name="MyXMLParameter" nillable="true"> 
<xsd:complexType> 
<xsd:sequence> 
<xsd:any minOccurs="0" processContents="lax" /> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 

可以XSD:任何做互联互通的工作吗?

谢谢!

回答

0

您没有将XML作为字符串发送。您正在发送XML。 XML作为字符串表示编码(如& lt; element/& gt;)XML,其中您的XSD定义了字符串类型的单个元素。您应该始终尝试定义服务接受的XML,以便消息定义成为服务描述的一部分。如果您接受任何XML,则可以使用xsd:any或编码的XML作为参数,但始终检查是否包含可能的攻击的XML,并限制输入消息的大小,以避免DoS攻击。

+0

编码的XML字符串确实是另一种在Web服务中发送XML数据的有用方法(通过xsd:string)。通过使用编码的XML字符串,我设法将XML发送到不支持xsd:any的Web服务。在.NET中,您也可以通过XmlElement.OuterXml自动获取编码的字符串。 – user405723 2010-09-07 06:35:52