I have got some HTML code through AJAX responseText, which is 350-400 lines long. It has been stored in the variable text as string and I would like to parse it to XML. However, some of the content is removed while parsing. The result ends in the script part and none of the body part of the code can be seen.

var xml = (new DOMParser()).parseFromString(text, "text/xml");
alert(xml.querySelector("body"));
console.log(text);
console.log((new XMLSerializer()).serializeToString(xml));

For the result of console.log(text), it returns the full code.

But The result of console.log((new XMLSerializer()).serializeToString(xml)) returns a very incomplete one, which ends like that:

for (i = 0; i </script></head></html>

And the alert one shows null, so I'm pretty sure that the content has lost since the parsing process.

Can anyone tell me how to solve it?

1 Answers

0
elem4th On Best Solutions

HTML isn't always valid XML. From your partial output it appears that you are trying to parse HTML. In that case, you should change the second parameter of parseFromString to "text/html" instead of "text/xml". After this the XML serialization should work fine.

Additionally, to get the serialized string you can also access the property documentElement.outerHTML on Document object returned from parseFromString method.