大家好,感谢您的帮助。
情况如下: 我正在使用一个web服务,它以下列方式返回一条肥皂消息:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getMessagesResponse xmlns="urn:DefaultNamespace">
<getMessagesReturn xmlns="">
<?xml version="1.0" encoding="ISO-8859-1" ?>
<contact>
A message with escaped values like & < >
</contact>
</getMessagesReturn>
</getMessagesResponse>
</soapenv:Body>
</soapenv:Envelope>
我使用NSUTF8StringEncoding来读取getMessagesReturn子项,它会生成以下内容:
<?xml version="1.0" encoding="ISO-8859-1">
<contact>
A message with escaped values like & < >
</contact>;
我的问题是,它也无视了&amp; &LT; &GT;在联系人标记内部,当然NSXMLParser会抛出错误,因为这些是XML标记内的无效字符。
我的问题是,我该如何避免这种情况?有没有办法在将信息传递给Parser之前只回退标签邮件内容?
非常感谢任何帮助。
编辑我使用:
[NSString stringWithCString:(char*)elementText encoding:NSUTF8StringEncoding];
答案 0 :(得分:1)
您是否控制网络服务?传递getMessageReturn的正确方法是使用CDATA。否则,正确的编码将是这样的(注意消息本身和额外的&amp; amp的)
<getMessagesReturn xmlns="">
<?xml version="1.0" encoding="ISO-8859-1" ?>
<contact>
A message with escaped values like &amp; &lt; &gt;
</contact>
</getMessagesReturn>
但是CDATA要容易得多,这就是它的用途。如果不出意外,您可以在解析之前使用字符串替换来插入CDATA。