开发者

Using the British pound sign in an XML feed to be read by an iPhone

I have created a web-based UTF-8 XML feed for use in an iPhone application.

When viewing in a web browser, if the feed contains a British Pound sign, I get a nasty XML error: XML Parsing Error: undefined entity

However the actual file seems to be readable.

1. Will an iPhone NSParser be able to read the file or will it fail due to 开发者_StackOverflowthis character?

2. Is it possible to encode the pound sign for XML?


if the feed contains a British Pound sign, I get a nasty XML error: XML Parsing Error: undefined entity

Your feed probably is using entity £ as the pound character. £ is a HTML entity and those can't be used without declaring them with DTD associated with (or embedded in) your XML document. If the entity is not defined, the XML parser will report that it has found an unknown entity.

Since you said your feed is encoded as UTF-8, you can just use the pound character as such - no need for an entity. Like LukeH suggested, other solution is to use the character reference £ which will be read as pound character by the XML parser.


You could just use the £ entity.


My final solution which seems to work in all cases is to replace all special chars as they are input.

  public function xmlEntities($text)
  {
    $search = array('&','<','>','"','\'', chr(163), chr(128), chr(165));
    $replace = array('&amp;', '&lt;', '&gt;', '&quot;', '&apos;', '&#163;', '&#8364;', '&#165;');

    $text = str_replace($search, $replace, $text);

    return $text;
  }


As you've shown a PHP code snippet...

I had the same problem, but your sample xmlEntities($text) { ... } function above didn't work.

Changing to just htmlspecialchars() did work however - as (in my case) I only care about characters which would screw up the parsing of the XML document (<,> etc), everything else should be valid unicode ....

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜