]> xenbits.xensource.com Git - libvirt.git/commitdiff
prlsdkParseSnapshotTree: Simplify XML parsing code
authorPeter Krempa <pkrempa@redhat.com>
Thu, 22 Sep 2022 15:53:04 +0000 (17:53 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 6 Oct 2022 08:54:24 +0000 (10:54 +0200)
Use features of virXMLParse to validate root node and fetch XPath
context.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/vz/vz_sdk.c

index 8fb7a9948d01cb5b3dd55a1c723fe98cfef63f42..8cd3348f5cc48bdc36aeca95efbb51451d1a4a9a 100644 (file)
@@ -4566,7 +4566,6 @@ prlsdkParseSnapshotTree(const char *treexml)
     virDomainSnapshotObjList *ret = NULL;
     g_autoptr(xmlDoc) xml = NULL;
     g_autoptr(xmlXPathContext) ctxt = NULL;
-    xmlNodePtr root;
     xmlNodePtr *nodes = NULL;
     virDomainSnapshotDef *def = NULL;
     virDomainMomentObj *snapshot;
@@ -4582,21 +4581,9 @@ prlsdkParseSnapshotTree(const char *treexml)
         return snapshots;
 
     if (!(xml = virXMLParse(NULL, treexml, _("(snapshot_tree)"),
-                            NULL, NULL, NULL, false)))
+                            "ParallelsSavedStates", &ctxt, NULL, false)))
         goto cleanup;
 
-    root = xmlDocGetRootElement(xml);
-    if (!virXMLNodeNameEqual(root, "ParallelsSavedStates")) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("unexpected root element: '%s'"), root->name);
-        goto cleanup;
-    }
-
-    if (!(ctxt = virXMLXPathContextNew(xml)))
-        goto cleanup;
-
-    ctxt->node = root;
-
     if ((n = virXPathNodeSet("//SavedStateItem", ctxt, &nodes)) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("cannot extract snapshot nodes"));
@@ -4604,7 +4591,7 @@ prlsdkParseSnapshotTree(const char *treexml)
     }
 
     for (i = 0; i < n; i++) {
-        if (nodes[i]->parent == root)
+        if (nodes[i]->parent == xmlDocGetRootElement(xml))
             continue;
 
         def = g_new0(virDomainSnapshotDef, 1);