与 Libxml2 中的 selectSingleNode 类似的函数
Similar function to selectSingleNode in Libxml2?
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<catalog>
IXMLDOMNode* pnode;
IXMLDOMNode* pNodeAuthor = NULL;
pnode->selectSingleNode (CComBSTR(L"author"), & pNodeAuthor);
或
getElementsByTagName("book[@id='bk101']")
或
selectNodes("//book[@id='bk101']")
问:在上面的XML文件中,使用Microsoft的XML DOM,我可以通过使用selectSingleNode((或getElementbyTagName((或selectNodes((函数来获取任何特定的节点,只需传递节点名称即可。
我想使用 Libxml2 做同样的事情,我已经阅读了所有标准函数,但没有获得任何这样的函数,如果您知道任何类似的函数或其他方法,那么请帮助!
很多时候我不使用 libxml2,但是...
还有更多方法可以做到这一点。一种方法是使用 xpath
这是一个例子
简而言之,首先您应该打开并解析 xml 文件,获取带有xmlParseFile()
的xmlDocPtr
xmlDocPtr xmlDoc = xmlParseFile(fileName);
接下来,您应该创建一个 xml 路径上下文,其中包含xmlXPathNewContext()
xmlXPathContextPtr xPathCnt = xmlXPathNewContext(xmlDoc);
现在,您可以找到具有 xpath 规则的节点;在您的情况下
xmlXPathObjectPtr result = xmlXPathEvalExpression((xmlChar*)"//book[@id='bk101']", xPathCnt);
如果结果不是空的,你可以检查一下
xmlXPathNodeSetIsEmpty(result->nodesetval)
您的元素应该在result->nodessetval
并且它们的编号应该result->nodessetval->nodeNr
链接示例中的更多详细信息。
PS:注意,代码未测试
p.s.2:对不起,我的英语不好
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗