1

如何使用 vala 在上下文中注册命名空间,以便可以查询“//someNamespace:tag”(而不仅仅是“//tag”)

我的出发点是: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 (AFAIK) Python XPath / libxml2 命名空间查询
中存在的 xpathRegisterNs 之类的东西

如果有人得到一些示例代码来获取文档中现有命名空间的列表,那也很棒。

PS:[*] 我说我猜是因为我希望我找到了一个很好的带有 vala 完成的 Linux IDE。现在我被 Monodevelop 2.8.6.3 卡住了,它有 vala 的语法突出显示但没有代码完成(它一直说“为类获取信息”但我没有得到任何结果)。所以如果有人知道一个好主意,我会很高兴听到你的声音......

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 回答