首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.net通过web服务发送xml中的特殊字符

问使用.net通过web服务发送xml中的特殊字符
EN

Stack Overflow用户
提问于 2010-01-06 18:13:27
回答 2查看 5.9K关注 0票数 0

我正在开发一个使用java web服务的.net应用程序,我通过wsdl.exe工具创建了客户机,它是web服务的方法之一,它接收一个xml文档作为参数,im使用XmlTextWriter生成文档,但是当在xml文档中包含特殊字符时,im会出现问题:

im生成的文档如下:

代码语言:javascript
复制
<xml-parameter>
  <some-field> this is text whit a (>) charatcer</some-field>
</xml-parameter>

使用fliddler检查生成的请求,我看到它的begin转义如下:

代码语言:javascript
复制
&lt;xml-parameter&gt;
  &lt;some-field&gt; this is a text whit a (&amp;gt;) character $lt;/some-field&gt;
&lt;xml-parameter&gt;

我可以看到,被转义为"& gt;“而不是> ;,我已经准备好尝试使用实体,而不是实际字符,事先感谢您。

编辑:这里的代码用于生成xml,基本上我使用一个内存流和xmltextwriter来生成xml,然后读取整个流,然后将生成的xml传递给我的服务代理。

代码语言:javascript
复制
string query = "/AGS_Polizas/INBOUNDLINK/@SOURCEITEMREF = > * ";

        MemoryStream stream = new MemoryStream();
        XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
        writer.Formatting = Formatting.Indented;
        writer.Indentation = 4;
        writer.WriteStartDocument(true);
        writer.WriteStartElement("RunQueryRequest");
        writer.WriteAttributeString("xmlns", "http://www.ibm.com/xmlns/db2/cm/beans/1.0/schema");
        writer.WriteAttributeString("maxResults", "0");
        writer.WriteAttributeString("version", "latest-version(.)");
        writer.WriteAttributeString("contentOption", "URL");
        writer.WriteAttributeString("retrieveOption", "ITEMTREE");

        writer.WriteStartElement("AuthenticationData");
        writer.WriteAttributeString("connectString", "SCHEMA=ICMADMIN");
        writer.WriteAttributeString("configString", "");

        writer.WriteStartElement("ServerDef");

        writer.WriteStartElement("ServerType");
        writer.WriteString("ICM");
        writer.WriteEndElement();

        writer.WriteStartElement("ServerName");
        writer.WriteString("icmnlsdb");
        writer.WriteEndElement();

        writer.WriteEndElement();


        writer.WriteStartElement("LoginData");

        writer.WriteStartElement("UserID");
        writer.WriteString("icmadmin");
        writer.WriteEndElement();

        writer.WriteStartElement("Password");
        writer.WriteString("Passw0rd");
        writer.WriteEndElement();

        writer.WriteEndElement();            
        writer.WriteEndElement();

        writer.WriteStartElement("QueryCriteria");
        writer.WriteStartElement("QueryString");
        writer.WriteString(query);
        writer.WriteEndElement();

        writer.WriteEndElement();


        writer.WriteEndElement();

        writer.Flush();

        stream.Seek(0, SeekOrigin.Begin);
        StreamReader reader = new StreamReader(stream);
        string xml = reader.ReadToEnd();
        writer.Close();
        reader.Close();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-06 20:56:53

为什么要手工生成请求xml而不使用.NET的内置方法来使用web服务?

似乎应该是双逃的。">“标志需要转义才能包含在xml文档中。然后,需要对整个XML进行转义,以适应XML服务请求。我不认为逃跑一定是个问题。

票数 0
EN

Stack Overflow用户

发布于 2010-01-07 00:23:32

好的,我设法通过替换XmlTextWriter生成的xml上的">“来解决这个问题,并让服务代理摆脱整个SOAP请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2015164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档