Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
An xml reader for node that uses a different approach than all other xml readers/parsers out there.
You can install xmlreader using the Node Package Manager (npm):
npm install xmlreader
I wanted a xml reader that's easy to use and that doesn't require tricks to access the attributes and text values of xml nodes. Most xml parsers out there use some kind of prefix, but that's not a sound solution.
I'm using functions to differentiate the attributes and text from the nodes:
node.attributes()
and node.text()
I also wanted a xml parser that can handle multiple nodes of the same name. Most parsers out there just ignore those or threat every node as an array.
I'm using functions to get to nodes of the same name. The same functions can also be used to get to nodes where there's only one of them:
nodes.count()
, nodes.at(0)
and nodes.each()
I'm using sax js created by Isaac to do all the hard work of actually parsing the xml :-)
node.attributes()
node.text()
note: if CDATA is found, CDATA is returned as text()
nodes.count()
nodes.at(i)
nodes.each(callback)
with: callback = function(index, node)
node.parent()
var xmlreader = require('xmlreader');
var someXml = '<response id="1" shop="aldi">'
+ 'This is some other content'
+ '<who name="james">James May</who>'
+ '<who name="sam">'
+ 'Sam Decrock'
+ '<location>Belgium</location>'
+ '</who>'
+ '<who name="jack">Jack Johnsen</who>'
+ '<games age="6">'
+ '<game>Some great game</game>'
+ '<game>Some other great game</game>'
+ '</games>'
+ '<note>These are some notes</note>'
+ '</response>'
xmlreader.read(someXml, function (err, res){
if(err) return console.log(err);
// use .text() to get the content of a node:
console.log( res.response.text() );
// use .attributes() to get the attributes of a node:
console.log( res.response.attributes().shop );
console.log("");
// using the .count() and the .at() function, you can loop through nodes with the same name:
for(var i = 0; i < res.response.who.count(); i++){
console.log( res.response.who.at(i).text() );
}
console.log("");
// you can also use .each() to loop through the nodes of the same name:
res.response.who.each(function (i, who){
console.log( who.text() );
});
console.log("");
console.log( res.response.who.at(1).text() ) ;
console.log( res.response.who.at(1).location.text() );
// you can also use .at() to get to nodes where there's only one of them:
console.log( res.response.note.at(0).text() );
console.log("");
// or loop through them as if they were a series of nodes with the same name:
res.response.note.each(function (i, note){
console.log( note.text() );
});
console.log("");
// you can also get the parent of a node using .parent():
console.log( res.response.who.at(1).parent().attributes().id ) ;
});
FAQs
node library to read xml the easy way
We found that xmlreader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.