正在从文档中删除 xml 个节点

Removing xml node from document

我试图在 html 文档中使用 xpath 查找某些节点。然后删除它们。 在这个例子中,我正在寻找一个 ID 为 "atoc_next" 的节点。找到了正确的节点,我取消了它的链接。然后我搜索一个节点 "article" 并将其写入文件。然而,原本应该取消链接的节点(文章节点的子节点)仍然存在。知道有什么问题吗?顺便说一句:如果我在取消链接后删除或 free_list() 节点,代码 sefaults =/

var html_cntx = new Html.ParserCtxt();
html_cntx.use_options(Html.ParserOption.NOWARNING);
html_cntx.use_options(Html.ParserOption.NOERROR);
var doc = html_cntx.read_file("document.txt");

Xml.XPath.Context cntx = new Xml.XPath.Context(doc);
Xml.XPath.Object* res = cntx.eval_expression("//a[@id='atoc_next']");

assert (res != null);
assert (res->type == Xml.XPath.ObjectType.NODESET);
assert (res->nodesetval != null);

for(int i = 0; i < res->nodesetval->length(); i++)
{
    Xml.Node* node = res->nodesetval->item(i);
    node->unlink;
}

delete res;
res = cntx.eval_expression("//article");
assert (res != null);
assert (res->type == Xml.XPath.ObjectType.NODESET);
assert (res->nodesetval != null);

FileStream stream = FileStream.open("article.html", "w");
assert (stream != null);

for(int i = 0; i < res->nodesetval->length(); i++)
{
    Xml.Node* node = res->nodesetval->item(i);
    doc->node_dump_file(stream, node);
}

感谢任何提前的建议:)

如果你node->unlink;,这没有效果。它只是获取一个指向 unlink 函数的函数指针,然后丢弃它。改为 node->unlink();