我正在尝试使用 SOAP 请求从 WebService 获取一些数据。 SOAP 主体应包含 SQL 查询。每当我使用 <
字符时,它都会在 SOAPReqBody.LoadXml()
处导致上述错误。我该如何解决这个问题?
HttpWebRequest request = CreateSOAPWebRequest();
XmlDocument SOAPReqBody = new XmlDocument();
SOAPReqBody.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<Query xmlns=""http://LifaOIS.DK/OISService"">
<UID>" + uid + @"</UID>
<PWD>" + pwd + @"</PWD>
<SQL>" + sql + @"</SQL>
<Meta>" + meta + @"</Meta>
</Query>
</soap:Body>
</soap:Envelope>");
答案 0 :(得分:0)
这很难看,但是如果您真的必须在消息有效负载中携带 SQL 查询并且小于 '<' 字符是 XML 中的一个问题,并且您无法控制有效负载的打包和解包,那么您可能喜欢考虑使用 BETWEEN...
WHERE field NOT EQUAL minValue AND field BETWEEN minvalue AND upperValue
请注意 BETWEEN 的 from 和 to 值是包含性的 - 因此需要排除 minValue
答案 1 :(得分:0)
您是否尝试过将 sql
包裹在 <![CDATA[...]]>
中?
喜欢:
<SQL><![CDATA[" + sql + @"]]></SQL>
代替
<SQL>" + sql + @"</SQL>
有关详细信息,请参阅 What does <![CDATA[]]> in XML mean?。