diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 16f504bafe..b7f86bdd91 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -1130,13 +1130,20 @@ vshExtractCPUDefXMLs(vshControl *ctl,
xmlDocPtr xml = NULL;
xmlXPathContextPtr ctxt = NULL;
xmlNodePtr *nodes = NULL;
+ char *doc;
size_t i;
int n;
if (virFileReadAll(xmlFile, VSH_MAX_XML_FILE, &buffer) < 0)
goto error;
- if (virAsprintf(&xmlStr, "%s", buffer) < 0)
+ /* Strip possible XML declaration */
+ if (STRPREFIX(buffer, "")))
+ doc += 2;
+ else
+ doc = buffer;
+
+ if (virAsprintf(&xmlStr, "%s", doc) < 0)
goto error;
if (!(xml = virXMLParseStringCtxt(xmlStr, xmlFile, &ctxt)))