0

使いやすいhtmlパーサーライブラリを探しています。現在、libxml2をセットアップしようとしていますが、イライラする問題が発生しています。私が使用しているIDEはPellesCです。libxml2のWindowsファイルを取得し、適切なフォルダー(正しいヘッダー領域のヘッダー、binのバイナリ、ライブラリのライブラリなど)に配置しましたが、プログラムをコンパイルしようとするたびにコンパイラは、私が呼び出すすべてのlibxml2関数が未定義であることを通知します。例えば:

リンカーフラグ:

-subsystem:console -machine:amd64 kernel32.lib advapi32.lib delayimp64.lib Ws2_32.lib libxml2.lib

コード:

static void print_element_names(xmlNode * a_node)
{
xmlNode *cur_node = NULL;

for(cur_node = a_node; cur_node; cur_node = cur_node->next) 
{
    if (cur_node->type == XML_ELEMENT_NODE) 
    {
        printf("node type: Element, name: %s\n", cur_node->name);
    }
    print_element_names(cur_node->children);
}
}

int main(void)
{
xmlDoc *doc = NULL;
xmlNode *root_element = NULL;

LIBXML_TEST_VERSION
doc = xmlReadFile("XMLFILE"/*XML_FILE PUT HERE*/, NULL, 0);
if (doc != NULL) printf("error: could not parse file");
root_element = xmlDocGetRootElement(doc);
print_element_names(root_element);
xmlFreeDoc(doc);
xmlCleanupParser();

return 0;
}

コンパイルしようとすると、次のエラーが発生します。

POLINK: error: Unresolved external symbol 'xmlCheckVersion'.
POLINK: error: Unresolved external symbol 'xmlReadFile'.
POLINK: error: Unresolved external symbol 'xmlDocGetRootElement'.
POLINK: error: Unresolved external symbol 'xmlFreeDoc'.
POLINK: error: Unresolved external symbol 'xmlCleanupParser'.
POLINK: fatal error: 5 unresolved external(s).

この状況全体が私を狂わせています。誰かがこの問題を解決するのを手伝ってくれるか、おそらくより簡単にセットアップできるhtmlパーサーを提案してくれるなら、私はそれを非常に感謝します。

4

3 に答える 3

1

これらのエラーはリンク段階に関連しています。使用したライブラリが何であれ、同じ問題が発生します。

間違ったパッケージをインストールした場合を除きます(たとえば、32ビットではなく64ビットライブラリ、またはその逆)。

XML解析の場合、libxml2は非常に便利なツールであり、非常に高速で非常に強力です。あなたがすでにそれを始めた方法として見て、私は代わりにリンカーの問題を解決しようとします。

于 2012-08-21T22:51:29.073 に答える
0

私はかつてMini-XMLを使用していました。これは、ANSICコンパイラでコンパイルされます。 http://www.minixml.org/

ただし、HTMLの解析はXMLの解析と同じではないため、注意が必要です。たとえば、HTMLでは、タグを閉じずにタグを付けることができます。例えば:

<img src="foo.jpg">
于 2012-08-21T22:52:52.507 に答える
0

html2cxxというツールでhtmlを解析してみました。何年も更新されていませんが、htmlとcss1.0をうまく解析できます。

于 2012-08-21T23:33:01.513 に答える