0

私は次のXMLを持っています:

<?xml version="1.0" encoding="utf-8"?>
<jack>
    <client name="Music Player Daemon">
        <port name="left">
            <connection port="jamin:in_L" />
        </port>
        <port name="right">
            <connection port="jamin:in_R" />
        </port>
    </client>
</jack>

PugiXML を使用して解析しようとしていますが、読み込み後にドキュメントが空になり、結果の説明にエラーは表示されません。

pugi::xml_document doc;
pugi::xml_parse_result result = doc.load("/location/filename.xml");
std::cout << "Load result: " << result.description() << std::endl;

しかし、それは空のドキュメントです:

std::size_t numitens = std::distance(doc.begin(), doc.end());
std::cout << numitens << std::endl;

出力:

Load result: No error
0

XML は問題ないと思いますよね?

XML は他のアプリによって生成されているため、変更できません。XML に問題がある場合は、XML パーサーを変更する必要がありますか? TinyXML または libxml++ ?

4

1 に答える 1

1

doc.load()ファイルではなく文字列をロードします。を使用する必要がありますdoc.load_file()

理想的には、文字列 "/location/filename.xml" の解析が失敗するはずです。そうでない理由は複雑で、主に下位互換性に関連しています。

于 2013-06-27T08:00:10.660 に答える