// Designed to be run from Node.js - i.e. "node example.js"
var XmlDocument = require('../lib/xmldoc').XmlDocument;
// Demonstrate parsing an in-memory XML string
var xmlString = '';
var suggestions = new XmlDocument(xmlString);
// Demonstrate how toString() will pretty-print the XML for debugging
console.log("Parsed: \n%s", suggestions);
// Demonstrate a simple eachChild() loop, printing our book titles
suggestions.eachChild(function(book) {
console.log("Found book with title: '%s'", book.attr.title);
console.log("==> The tag started at position %s and the complete element ended at line %s, column %s, position %s.", book.startTagPosition, book.line, book.column, book.position);
});
// Now load an XML file from disk and parse it
var fs = require('fs'),
path = require('path');
fs.readFile(path.join(__dirname, "test.xml"), 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
// Parse the XML
var results = new XmlDocument(data);
// Demonstrate toString() with an option to abbreviate long strings and compress the output
console.log("Parsed: \n%s", results.toString({trimmed:true, compressed:true}));
// Pull out the node
var books = results.childNamed("books");
// Demonstrate firstChild/lastChild
console.log("First book has ISBN '%s', last book has ISBN '%s'", books.firstChild.attr.isbn, books.lastChild.attr.isbn);
// Print out the ISBNs
books.eachChild(function (book) {
console.log("Found book with ISBN '%s'", book.attr.isbn);
});
// Look for all children with a certain node name
var allBooks = books.childrenNamed("book");
// The result is an array of XmlElement instances
console.log("Found %s books.", allBooks.length);
// Search for a particular book
var twilight = books.childWithAttribute("isbn","478-2-23-765712-2");
// Result is a single XmlElement instance for
console.log("Title of book with given ISBN: '%s'", twilight.valueWithPath("title"));
return null;
});