我使用的libxml2解析HTML:libxml2的HTML解析問題
static htmlSAXHandler simpleSAXHandlerStruct = {
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 */
NULL, /* cdataBlock */
NULL, /* externalSubset */
XML_SAX2_MAGIC, //
NULL,
startElementSAXP, /* startElementNs */
endElementSAXP, /* endElementNs */
NULL, /* serror */
};
的charactersFoundSAX
和errorEncounteredSAX
功能也被調用,但startElementSAXP
和endElementSAXP
的功能不被調用。
如果我改變HTML解析並改爲解析XML(並將所有定義(包括'html'改爲'xml',例如改爲xmlSAXHandler
)),函數就會正確調用。
這是爲什麼?
你是什麼意思:如果我改變從HTML分析和解析XML呢?謹慎給我們HTML/XML文件,以便我們可以真正開始挖掘它?我只能說我的HTML SAX解析器可以工作。 – hroptatyr 2010-08-15 13:41:29
您可以嘗試'http:// www.google.com/index.html'。您確定這兩個函數在解析器中被調用: http://xmlsoft.org/html/libxml-parser.html#startElementNsSAX2Func http://xmlsoft.org/html/libxml-parser.html#endElementNsSAX2Func – ryyst 2010-08-15 13:53:22
那麼不,我不使用HTML模式下的NS感知功能插槽。 這將是你的問題,我認爲,HTML沒有命名空間的概念,也許你最好使用startElement/endElement插槽? – hroptatyr 2010-08-15 14:02:37