iOS 上的 libxml 断然拒绝解析这个看似有效的 XML 文件(SVG 规范的一部分!):
http://www.w3.org/TR/SVG11/images/coords/PreserveAspectRatio.svg
它抱怨:
Error Domain=1 Code=27 "Entity 'Smile' not defined
UserInfo=0x7655730
{
lineNumber=26,
NSLocalizedDescription=Entity 'Smile' not defined,
bonusInfo1=Smile,
columnNumber=25
}
...并为每个实体返回一个警告级别错误。似乎没有办法强迫它做文档暗示的事情(默认解析实体)。这里有一个神秘的伪解释(http://www.xmlsoft.org/entities.html),它说这非常困难,没有人应该自己做......但 libxml 似乎也没有做到:( .
这是设置结构,以确认我没有为实体解析提供任何覆盖:
static xmlSAXHandler SAXHandler = {
NULL, /* internalSubset */
NULL, /* isStandalone */
NULL, /* hasInternalSubset */
NULL, /* hasExternalSubset */
NULL, /* resolveEntity */
NULL, /* getEntity */
NULL, /* entityDecl */
NULL, /* notationDecl */
NULL, /* attributeDecl */
NULL, /* elementDecl */
NULL, /* unparsedEntityDecl */
NULL, /* setDocumentLocator */
NULL, /* startDocument */
NULL, /* endDocument */
NULL, /* startElement*/
NULL, /* endElement */
NULL, /* reference */
charactersFoundSAX, /* characters */
NULL, /* ignorableWhitespace */
NULL, /* processingInstruction */
NULL, /* comment */
NULL, /* warning */
errorEncounteredSAX, /* error */
NULL, /* fatalError //: unused error() get all the errors */
NULL, /* getParameterEntity */
cDataFoundSAX, /* cdataBlock */
NULL, /* externalSubset */
XML_SAX2_MAGIC,
NULL,
startElementSAX, /* startElementNs */
endElementSAX, /* endElementNs */
structuredError, /* serror */
};