]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: xml: Introduce virXMLNodeGetSubelement
authorPeter Krempa <pkrempa@redhat.com>
Fri, 2 Dec 2022 09:35:13 +0000 (10:35 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 2 Dec 2022 15:49:25 +0000 (16:49 +0100)
Introduce a simple helper fetching a sub-element node by name. This is
meant as a simple replacement for either open-coded versions of this or
use of XPath for this trivial lookup.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/libvirt_private.syms
src/util/virxml.c
src/util/virxml.h

index 9389778db7ce556dd56b83a317647c8a30e74c1c..348bf3a430b05e47ef09a40309f951adb6b9f609 100644 (file)
@@ -3671,6 +3671,7 @@ virXMLFormatElementInternal;
 virXMLFormatMetadata;
 virXMLNewNode;
 virXMLNodeContentString;
+virXMLNodeGetSubelement;
 virXMLNodeNameEqual;
 virXMLNodeSanitizeNamespaces;
 virXMLNodeToString;
index 870ba194b037d9635fe4f60e267be1fa49ed1fa7..7d9d4bb234d617eba33ee9769989e0d40a53da33 100644 (file)
@@ -849,6 +849,29 @@ virXPathBoolean(const char *xpath,
 }
 
 
+/**
+ * virXMLNodeGetSubelement:
+ * @node: node to get subelement of
+ * @name: name of subelement to fetch
+ *
+ * Find and return a sub-element node of @node named @name.
+ */
+xmlNodePtr
+virXMLNodeGetSubelement(xmlNodePtr node,
+                        const char *name)
+{
+    xmlNodePtr n;
+
+    for (n = node->children; n; n = n->next) {
+        if (n->type == XML_ELEMENT_NODE &&
+            virXMLNodeNameEqual(n, name))
+            return n;
+    }
+
+    return NULL;
+}
+
+
 /**
  * virXPathNode:
  * @xpath: the XPath string to evaluate
index f19cbe59aedba25c6541c5c573dad81f888d8d48..d5b998263c47edc4ef257580c3a9f7e6953b7c7f 100644 (file)
@@ -72,6 +72,11 @@ int
 virXPathLongLong(const char *xpath,
                  xmlXPathContextPtr ctxt,
                  long long *value);
+
+xmlNodePtr
+virXMLNodeGetSubelement(xmlNodePtr node,
+                        const char *name);
+
 xmlNodePtr
 virXPathNode(const char *xpath,
              xmlXPathContextPtr ctxt);