with this patch it is possible to compile Vbox on libxml-2.12

--- VirtualBox-7.0.18/src/VBox/Runtime/r3/xml.cpp.orig
+++ VirtualBox-7.0.18/src/VBox/Runtime/r3/xml.cpp
@@ -131,7 +131,7 @@
     RTStrFree(msg);
 }
 
-XmlError::XmlError(xmlErrorPtr aErr)
+XmlError::XmlError(const xmlError *aErr)
 {
     if (!aErr)
         throw EInvalidArg(RT_SRC_POS);
@@ -145,7 +145,7 @@
  * Composes a single message for the given error. The caller must free the
  * returned string using RTStrFree() when no more necessary.
  */
-/* static */ char *XmlError::Format(xmlErrorPtr aErr)
+/* static */ char *XmlError::Format(const xmlError *aErr)
 {
     const char *msg = aErr->message ? aErr->message : "<none>";
     size_t msgLen = strlen(msg);
--- VirtualBox-7.0.18/include/iprt/cpp/xml.h.orig
+++ VirtualBox-7.0.18/include/iprt/cpp/xml.h
@@ -113,9 +113,9 @@
 class RT_DECL_CLASS XmlError : public RuntimeError
 {
 public:
-    XmlError(xmlErrorPtr aErr);
+    XmlError(const xmlError *aErr);
 
-    static char* Format(xmlErrorPtr aErr);
+    static char* Format(const xmlError *aErr);
 };
 
 // Logical errors