Create a JavaScript method that will take 2 parameters, first parameter will take complete XML as string and second will take XML node object which need to be removed from first parameter i.e. complete XML
Create a JavaScript method that will take 2 parameters, first parameter will take complete XML as string and second will take XML node object which need to be removed from first parameter i.e. complete XML
function removeXmlNode(xmlString, nodeToRemove) {
try {
// Parse the XML string into a DOM object
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
// Find the node in the XML document that matches the node to be removed
const serializedNodeToRemove = new XMLSerializer().serializeToString(nodeToRemove);
const allNodes = xmlDoc.getElementsByTagName("*"); // Get all elements
for (let i = 0; i < allNodes.length; i++) {
const currentSerializedNode = new XMLSerializer().serializeToString(allNodes[i]);
// Compare the serialized strings of the nodes
if (currentSerializedNode === serializedNodeToRemove) {
allNodes[i].parentNode.removeChild(allNodes[i]);
break;
}
}
// Serialize the updated XML document back to a string
const serializer = new XMLSerializer();
return serializer.serializeToString(xmlDoc);
} catch (error) {
console.error("Error while removing XML node:", error);
return null; // Return null to indicate failure
}
}
Example of above method:
// Example usage
const xmlString = `
<root>
<item id="1">First</item>
<item id="2">Second</item>
</root>`;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
const nodeToRemove = xmlDoc.querySelector("item[id='2']");
const updatedXml = removeXmlNode(xmlString, nodeToRemove);
console.log(updatedXml);