C# 将xml数据发送到web服务而不是使用CDATA的最佳方式是什么?
我有一个web服务,它只接受一个字符串参数 在我的例子中,我需要发送一个字符串,它是一个xml文档,其中一个元素包含一个xml片段(我将使用它创建一个文件) 例如,我发送:C# 将xml数据发送到web服务而不是使用CDATA的最佳方式是什么?,c#,xml,web-services,C#,Xml,Web Services,我有一个web服务,它只接受一个字符串参数 在我的例子中,我需要发送一个字符串,它是一个xml文档,其中一个元素包含一个xml片段(我将使用它创建一个文件) 例如,我发送: <people> <person> <name>J Smith</name> <value><![CDATA[<content>rest of xml document here</content>]]>&
<people>
<person>
<name>J Smith</name>
<value><![CDATA[<content>rest of xml document here</content>]]></value>
</person>
</people>
史密斯
此处是xml文档的其余部分]]>
我曾经。。创建一个xml文件
我想知道是否有比使用CDATA?更好的方法来实现这一点?。CDATA文件非常小(小于20KB)
JD我建议Base64编码XML片段。我建议Base64编码XML片段。使用多部分/表单数据的标准HTTP POST如何?将单个参数作为url或querystring的一部分 这是一种更“宁静”的做事方式
这只是一个标准的文件上传 使用多部分/表单数据的标准HTTP POST如何?将单个参数作为url或querystring的一部分 这是一种更“宁静”的做事方式
这只是一个标准的文件上传 不需要使用CDATA。您可以按原样直接传递xml片段 比如说, 更新: Steve指出,您有一个字符串参数,而不是XmlElement参数。我不确定它是否仍然可以这样工作(尽管我觉得它可以:) 除了CDATA和Base64之外的另一个选项是Xml编码,例如
var xml = new XmlDocument();
var node = xml.CreateElement("root");
node.InnerText = "<content>Anything</content>";
var xmlString = node.InnerXml; /// <content>Anything</content>
var xml=new XmlDocument();
var node=xml.CreateElement(“根”);
node.InnerText=“任何”;
var xmlString=node.InnerXml;//内容任何东西/内容
无需使用CDATA。您可以按原样直接传递xml片段
比如说,
更新:
Steve指出,您有一个字符串参数,而不是XmlElement参数。我不确定它是否仍然可以这样工作(尽管我觉得它可以:)
除了CDATA和Base64之外的另一个选项是Xml编码,例如
var xml = new XmlDocument();
var node = xml.CreateElement("root");
node.InnerText = "<content>Anything</content>";
var xmlString = node.InnerXml; /// <content>Anything</content>
var xml=new XmlDocument();
var node=xml.CreateElement(“根”);
node.InnerText=“任何”;
var xmlString=node.InnerXml;//内容任何东西/内容
不知道为什么有人投票否决了这一点。。。这个答案在我看来是合理的。我到处都看到过这种事。我个人有一个不同的建议,但这个建议似乎仍然有效。base64编码内容会有什么好处,因为我的字符串参数(……etc)不会太大(最大值小于400KB)?我相信他建议您对当前使用cdata的部分进行base64编码(您的“value”元素中的值).+1最佳答案-在不更改服务合同或技术的情况下严格满足要求。@Steve。是的,我知道编码是指xml中的CDATA部分。在所有的多个CDATA区域中,我不希望xml块超过400KB,所以我担心编码/解码是否是一种过度的(性能方面的)操作?不确定为什么有人否决了这一点。。。这个答案在我看来是合理的。我到处都看到过这种事。我个人有一个不同的建议,但这个建议似乎仍然有效。base64编码内容会有什么好处,因为我的字符串参数(……etc)不会太大(最大值小于400KB)?我相信他建议您对当前使用cdata的部分进行base64编码(您的“value”元素中的值).+1最佳答案-在不更改服务合同或技术的情况下严格满足要求。@Steve。是的,我知道编码是指xml中的CDATA部分。在所有多个CDATA区域中,我不希望xml块超过400KB,因此我担心编码/解码是否是一种过度(性能方面的)操作?这并没有回答问题,是吗?为什么不是?他有一个web服务,它“接受一个字符串参数”(“name”,在他的示例中)和一个XML文档(他使用CDATA将其放入另一个XML文档中)。他在寻求更好的方法。。。我说只需将XML文档作为普通文档上传到CDATA中,并在URL/Querystring中传递单个参数(“名称”)。。。似乎它完美地回答了我的问题。他在问如何将XML数据放入XML文档中。(我猜那是因为他用的是肥皂而不是休息。)他从来没有说过这样的话。我不知道你从哪里弄来的。报价?有很多方法可以做到这一点。如果您没有使用WCF(看起来您没有获得您引用的.asmx),最简单的方法可能只是制作一个aspx页面,并在页面加载中执行标准的asp.net上载提交处理。WCF使这变得更加容易,并且将更自然地支持JSON、POX、SOAP或任何您想要的其他格式的响应消息。这并没有回答问题,是吗?怎么不呢?他有一个web服务,它“接受一个字符串参数”(“name”,在他的示例中)和一个XML文档(他使用CDATA将其放入另一个XML文档中)。他在寻求更好的方法。。。我说只需将XML文档作为普通文档上传到CDATA中,并在URL/Querystring中传递单个参数(“名称”)。。。似乎它完美地回答了我的问题。他在问如何将XML数据放入XML文档中。(我猜那是因为他用的是肥皂而不是休息。)他从来没有说过这样的话。我不知道你从哪里弄来的。报价?有很多方法可以做到这一点。如果您没有使用WCF(看起来您没有获得您引用的.asmx),最简单的方法可能只是制作一个aspx页面,并在页面加载中执行标准的asp.net上载提交处理。WCF使这变得更加容易,并将更自然地支持JSON、POX、SOAP或任何其他格式的响应消息。。。既然我们已经同意了,我们就应该受到他现有计划的约束