// 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; });