HTML 文字列を解析し、クエリを実行していくつかのノードを取得し、これらのノードの HTML を出力するメソッドを作成しています。
私はlibxmlを使用しており、入力 HTML を読み込んで解析し、必要なノードの HTML 文字列を出力することができました。文字。
これまでに得たものは次のとおりです(コードはObjective-Cプロジェクトの一部です):
NSString *HTMLString = ...
NSData *documentData = [HTMLString dataUsingEncoding:NSUTF8StringEncoding];
//Create the document
xmlDocPtr doc = htmlReadMemory([documentData bytes],
[documentData length],
"",
NULL,
HTML_PARSE_NOWARNING | HTML_PARSE_NOERROR);
//Get the node I want to output
xmlNodePtr node = ...
//Create the node buffer and fill it with the node content
xmlBufferPtr nodeBuffer = xmlBufferCreate();
htmlNodeDump(nodeBuffer, doc, node);
...
これにより、ノードの HTML コンテンツが正常にダンプされますが、文字エンティティは UTF-8 文字に変換されます。入力 HTML に存在する唯一のエンティティは、ノードの HTML を書き出すときに保持したい’
andなどの引用符です。‘
コンテンツ。
HTML 解析と HTML ツリー関数に関連する libxml ドキュメントを調べましたが、HTML エンティティに関する情報が見つからないようです。これが解析中に行われるものなのか、出力中に行われるものなのかもわかりません。を使用してノードのコンテンツを単純に出力しようとしましたがxmlNodeGetContent()
、エンティティも対応する UTF8 文字に置き換えられていたため、解析の問題であると思われますが、よくわかりません。