Get All XML Nodes
Get the list of All possible XML Nodes
by maheshBongani
HTML
<div id="banner-message">
<p id="textDisplay">Hello World</p>
</div>
JavaScript
function getAllXMLNodes() {
var allNodes = [];
var i = 0;
function getPaths($node, parentPath) {
var node = getNode(i++, $node.nodeName);
//allNodes.push(node);
parentPath += $node.nodeName + '/';
debugger;
//arr.push(parentPath);
if ($node.children) {
for (let i = 0; i < $node.children.length; i++) {
let childNode = getPaths(getNodeAsXMLObject($node.children[i]), parentPath);
node.subs.push(childNode);
}
}
return node;
}
function getNodeAsXMLObject(text) {
var parser, xmlDoc;
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "text/xml");
console.log(xmlDoc);
return xmlDoc;
}
function getNode(id, title) {
return {
id: id,
title: title,
subs: []
};
}
var xml = "<Root><section><type>some data</type><name>some data</name><definition>some data</definition><property><definition>some data</definition><value><definition>some data</definition></value></property></section><definition>some data</definition></Root>";
var paths = getPaths(getNodeAsXMLObject(xml).children, '');
document.getElementById('textDisplay').value = JSON.stringify(paths);
console.log(paths);
alert(JSON.stringify(paths));
}
getAllXMLNodes();
function getStructredXMLfromNodes() {
/* https: //stackoverflow.com/questions/26295599/creating-dynamic-xml-tree-based-on-the-xpath-value */
function addElementByPath(parent, path, value) {
var node = parent;
var parts = path.split(/\//);
var dom = parent.ownerDocument;
var existingNode;
for (var i = 0; i < parts.length; i++) {
existingNode = dom.evaluate(
parts[i], node, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null
).singleNodeValue;
if (existingNode) {
node = existingNode;
} else {
node = node.appendChild(dom.createElement(parts[i]));
}
}
node.appendChild(dom.createTextNode(value));
}
var paths = [
...