我正在开发一个.net应用程序,它使用了一个java web服务,我通过wsdl.exe工具创建了客户端,并且它的工作正常,网络方法之一服务,接收XML文档作为参数,并使用XmlTextWriter
IM生成文档,但包括在XML文档内的特殊字符,例如当有问题IM:使用.net通过web服务发送特殊字符使用.net
文档IM产生看起来像这样:
<xml-parameter>
<some-field> this is text whit a (>) charatcer</some-field>
</xml-parameter>
使用fliddler检查生成的请求,我看到它的开始像这样逃脱:
<xml-parameter>
<some-field> this is a text whit a (&gt;) character $lt;/some-field>
<xml-parameter>
我可以看到被beign转义为“&安培; GT;“,而不是& GT;我都准备好使用实体而不是实际的性格丝毫没有运气提前 感谢=)试图
编辑: 这里的代码使用生成XML,基本上我。使用一个内存流和XmlTextWriter的生成XML,然后读取整个流,我通过生成的XML我的服务代理。
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();
该字符正在被双重编码。你能向我们展示生成xml的代码吗? – nont 2010-01-06 18:37:49
文本可以在某处进行双重编码吗?你是否使用writer.WriteString(“这是文本惠特(>)charatcer”);? – 2010-01-06 18:42:32
嗯,即时通讯使用writer.WriteString其实是=/ – Harima555 2010-01-06 18:45:34