Я занимаюсь разработкой приложения .net, которое использует веб-службу Java, я создал клиента с помощью инструмента wsdl.exe, и его рабочий инструмент, один из методов веб-службы, получает XML-документ в качестве параметра, и Я использую XmlTextWriter
для генерации документа, но у меня возникают проблемы при включении специальных символов в документ XML, например:
Документ, который я генерирую, выглядит следующим образом:
<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 экранирован как " & amp; gt; " вместо & gt; Я все готово, пытаясь использовать сущность вместо фактического персонажа, но не повезло
заранее спасибо =).
Edit:
Вот код, используемый для генерации 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();