vala/libxml2:如何使用名称空间查询xpath?(xpathRegisterNs?)

vala/libxml2:如何使用名称空间查询xpath?(xpathRegisterNs?),xpath,xml-namespaces,libxml2,vala,Xpath,Xml Namespaces,Libxml2,Vala,如何在vala的上下文中注册名称空间,以便可以查询“//someNamespace:tag”(而不仅仅是“//tag”) 我的出发点是: 我猜[*]如何“创建”一些名称空间 Xml.Ns* ns = new Xml.Ns(null,"","svg"); 现在如何将此命名空间传递到上下文? 类似于存在于.py(AFAIK)中的xpathRegisterNs的东西 如果有人得到一些示例代码来获取文档中现有名称空间的列表,那也会很好 PS:[*]我说我猜是因为我希望我找到了一个有vala完成的好的

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

我的出发点是:

我猜[*]如何“创建”一些名称空间

Xml.Ns* ns = new Xml.Ns(null,"","svg");
现在如何将此命名空间传递到上下文?
类似于存在于.py(AFAIK)中的xpathRegisterNs的东西

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


PS:[*]我说我猜是因为我希望我找到了一个有vala完成的好的Linux IDE。现在我一直在使用Monodevelop 2.8.6.3,它为vala提供了语法高亮显示,但没有代码完成(它一直在说“为类获取信息”,但我没有得到任何结果)。因此,如果有人知道一个好的ide,我会很高兴听到你…

你不需要创建名称空间作为一个对象;这只需要在文档中注册它。在
上下文中
执行以下操作:

ctx.register_ns("svg", "http://www.w3.org/2000/svg");
ctx.eval_expression("//svg:g");

您不需要将名称空间创建为对象;这只需要在文档中注册它。在
上下文中
执行以下操作:

ctx.register_ns("svg", "http://www.w3.org/2000/svg");
ctx.eval_expression("//svg:g");

这可以工作,但是抛出函数“xmlXPathRegisterNs”[-Wimplicit函数声明]xmlXPathRegisterNs(cntx,(xmlChar*)“a”,“xmlChar*)“b”)的
隐式声明警告,知道为什么吗?谢谢!VAPI似乎缺少头文件
libxml/xpathInternals.h
的include。您可以将
[CCode(cname=“xmlXPathRegisterNs”)]
替换为
[CCode(cname=“xmlXPathRegisterNs”)、cheader_filename=“libxml/xpathinterns.h”)]
中的
libxml2.vapi
。这可以工作,但会抛出函数“xmlXPathRegisterNs”[-Wimplicit function declaration]xmlXPathRegisterNs的
隐式声明(cntx,(xmlChar*)“a”,(xmlChar*)“b”);
警告,知道为什么吗?Thx!VAPI似乎缺少头文件
libxml/xpathinterns.h的include
。您可以用
[CCode(cname=“xmlXPathRegisterNs”),
替换
[CCode(cname=“xmlXPathRegisterNs”),cheader\u filename=“libxml/xpathinterns.h”)]
libxml2.vapi中的