Skip to content

This module will build, read and manipulate an xml file. Other handy stuff is also available, like search for a specific nodes.

Notifications You must be signed in to change notification settings

osfunapps/os-xml-handler-npm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Introduction

This module will build, read and manipulate an xml files. Other handy stuff is also available, like search for a specific nodes.

Installation

Install via npm:

npm i os-xml-file-handler 

Functions and signatures:

/** * Will create an xml file to work with. * Notice: this method WON'T save the xml in the system. To save the xml, call saveXml(xml) * * @param rootNodeTag -> the tag name of the root node */ createXml: function (rootNodeTag) { return self.loadXml(null, '<?xml version="1.0" encoding="utf-8"?>\n<' + rootNodeTag + '/>') }, /**  * Will save any changes made in the xml  *  * @param xml -> the xml  * @param filePath -> the output path of the file  */ saveXml: function (xml, filePath) { let xmlStr = xml.write({'xml_declaration': true}); streamer.writeFileSync(xmlStr, filePath) }, /**  * Will load an xml file  *  * @param fromPath -> optional path to the xml file  * @param fromStr -> optional xml string  */ loadXml: async function (fromPath, fromStr = null) { let xmlStr = fromStr; if (xmlStr === null) { let xmlInLines = await streamer.readFile(fromPath); xmlStr = xmlInLines.join("\n"); } return et.parse(xmlStr); }, /**  * Will add a node to a certain (relative) location  *  * @param xml -> the xml file  * @param nodeTag -> the tag for the new node ('String', for example)  * @param attDict -> optional dict of att and values for the new node  * @param nodeText -> optional text the new node will carry  * @param parentNode -> (optional) the parent of the new node (for root descendent, leave blank)  */ addNode: function (xml, nodeTag, attDict = {}, nodeText = null, parentNode = null) { if(parentNode === null) { parentNode = self.getRoot(xml) } let element = et.SubElement(parentNode, nodeTag, attDict); if(nodeText !== null) { self.setNodeText(element, nodeText) } return element }, /**  * Will return a list of nodes specified by an attribute key and and an attribute value.  *  * @param xml -> the xml object  * @param node_tag -> the tag of the nodes to look for  * @param node_att_name -> the att name of the nodes to look for  * @param node_att_val -> the att value of the nodes to look for  */ getNodes: function (xml, node_tag, node_att_name = null, node_att_val = null) { let selector = node_tag; if (node_att_name !== null) { if (node_att_val !== null) { selector = node_tag + "[@" + node_att_name + "='" + node_att_val + "']" } else { selector = node_tag + "[@" + node_att_name + "]" } } return xml.findall(".//" + selector) }, /**  * Will return the root element of the xml  */ getRoot: function(xml) { return xml.getroot() }, /**  * Will set the text (inner html) in a given node  */ setNodeText: function (node, text) { node.text = text }, /**  * Will return the text (inner html) from a given node  */ getNodeText: function (node) { return node.text }, /**  * Will set attributes to an element  *  * @param node -> the node to which the attributes will be appended  * @param attDict -> the dictionary of attributes to add  */ setNodeAtt: function (node, attDict) { for (let key in attDict) { if (attDict.hasOwnProperty(key)) { node.attrib[key] = attDict[key]; } } return node }, /**  * Will remove node attribute  */ removeNodeAtt: function (node, attArr) { for (let i = 0; i < attArr.length; i++) { delete node.attrib[attArr[i]] } }, /**  * Will return the node's attribute value  */ getNodeAttributeValue: function (node, att) { return node.attrib[att] }, /**  * Will return the tag of a given node  */ getNodeTag: function (node) { return node.tag },

And more...

Links -> see more tools

  • os-tools-npm -> This module contains fundamental functions to implement in an npm project
  • os-file-handler-npm -> This module contains fundamental files manipulation functions to implement in an npm project
  • os-file-stream-handler-npm -> This module contains read/write and more advanced operations on files
  • os-xml-handler-npm -> This module will build, read and manipulate an xml file. Other handy stuff is also available, like search for specific nodes

GitHub - osfunappsapps

Licence

ISC

About

This module will build, read and manipulate an xml file. Other handy stuff is also available, like search for a specific nodes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published