Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将xml数据发送到web服务而不是使用CDATA的最佳方式是什么?_C#_Xml_Web Services - Fatal编程技术网

C# 将xml数据发送到web服务而不是使用CDATA的最佳方式是什么?

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>]]>&

我有一个web服务,它只接受一个字符串参数

在我的例子中,我需要发送一个字符串,它是一个xml文档,其中一个元素包含一个xml片段(我将使用它创建一个文件)

例如,我发送:

<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; /// &lt;content&gt;Anything&lt;/content&gt;
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; /// &lt;content&gt;Anything&lt;/content&gt;
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或任何其他格式的响应消息。。。既然我们已经同意了,我们就应该受到他现有计划的约束