views:

69

answers:

3

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 this character?

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

+2  A: 

You could just use the £ entity.

LukeH
+3  A: 

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.

jasso
A: 

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;
  }
Jon Winstanley