1

「//someNamespace:tag」(「//tag」だけでなく)を照会できるように、valaを使用してコンテキストに名前空間を登録するにはどうすればよいですか?

私の出発点は: https://live.gnome.org/Vala/XmlSample

            Xml.Doc* doc = Parser.parse_file (path);
            if(doc==null) print("failed to read the .xml file\n");

            Context ctx = new Context(doc);
            if(ctx==null) print("failed to create the xpath context\n");

            Xml.XPath.Object* obj = ctx.eval_expression("/Example/Objects/Pet");
            if(obj==null) print("failed to evaluate xpath\n");

私は[*]名前空間を「作成」する方法を推測しました

Xml.Ns* ns = new Xml.Ns(null,"","svg");

この名前空間をコンテキストに渡すにはどうすればよいですか?
.py に存在する xpathRegisterNs のようなもの (AFAIK)
Python XPath / libxml2 名前空間クエリ

誰かがドキュメント内の既存の名前空間のリストを取得するためのサンプル コードを入手した場合、それも素晴らしいでしょう。

PS: [*] 私が推測したのは、vala 補完を備えた優れた Linux IDE を見つけたかったからです。現在、vala の構文が強調表示されているがコード補完がない Monodevelop 2.8.6.3 で立ち往生しています (「クラスの情報を取得しています」と言い続けていますが、結果は得られません)。誰かが良いアイデアを知っているなら、私はあなたに聞いてうれしいです...

4

1 に答える 1

4

名前空間をオブジェクトとして作成する必要はありません。これは、ドキュメントに登録する場合にのみ必要です。実行中Context:

ctx.register_ns("svg", "http://www.w3.org/2000/svg");
ctx.eval_expression("//svg:g");
于 2012-11-22T03:59:25.190 に答える