XML DOM Functionality in.NET DSK Chakravarthy
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Agenda You can see the agenda along the entire presentation Q&A is at the End of session
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME What I talk about The basics of reading and writing XML, programmatically The important classes associated with XML documents in the System.XML namespace How to Read XML Data How to Traverse in XML DOM using xPath expressions
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Are you ready ? Prerequisites Basic Understanding of XML Ability to read code
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Getting Started Many apps need to read/write XML data Perhaps need to: –Store or retrieve configuration settings –Read/write data stored in XML format –Handle inter-application data transfer XML programming required for all these System.Xml.XmlDocument class provides support for handling XML
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM What I’ll cover now NET Framework uses XML in many ways –Provides several techniques for working with XML Only cover tree-based, in-memory handling Other sessions cover other techniques, including the XmlReader/XmlWriter classes
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM.NET APIs for working with XML Two main.NET APIs for working with XML: –Cached, read/write, random access XML Document Object Model (DOM) Tree-based, in-memory cache Represented by the XmlDocument class –Non-cached, forward-only, read-only access Represented by the XmlReader/XmlWriter classes
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Tree-Based XML Handling 1/4 Using this API, XML data loaded synchronously into a “tree” –Contains root node, and multiple child nodes –Each XML element corresponds to one or more nodes in the tree –Each node (except root node) has a parent node –Each node (except root node) can have multiple siblings –Each node can have multiple children
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Tree-Based XML Handling 2/4 Data loaded into memory –Provides random access to individual nodes –Can search for any node, at will Tree-based structure represents XML infoset –This is the data stored in the serialized XML format –API doesn’t care about angle brackets and quotes Just the data and its relationships
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Tree-Based XML Handling 3/4 Turns this XML content:Turns this XML content: <book genre="novel" publicationdate="1997" ISBN=" "> Pride And Prejudice Jane Austen 24.95
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Tree-Based XML Handling 4/4 Into this data structureInto this data structure bookstore book publication date title author price firstname lastname
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Non-Cached XML Handling Allows for fast access –No waiting for data to load Requires less overhead Doesn’t allow random access to data –Data flows to application in the order it appears within the original XML stream Not covered here
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM What is XML DOM? To provide standard mechanism for programmatically working with data –W3C proposed a standard API for working with XML –XML Document Object Model is the result Provides software vendors with API for manipulating XML data Before.NET, VB developers used MSXML COM component –Now use System.Xml namespace
Demonstaration -- 0 investigating a sample file – Grocery store
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Introduction to XML DOM Sample file as Datastructure Grocery Store Name = “Breads” Store name #text Brain’s Groceries department Name = “Fruits” department departments Item Id=“B1” Name #text Wonder Bread Price #text 1.29 New Item Id=“B2” Name #text Blueberry Muffin Price #text 3.99 New Type = “Muffin” Item Id=“F1” Name #text Apple Price #text 0.99
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Reading XML Data Load XML Data Need to load XML data into an XmlDocument object –Parse persisted XML into tree-based structure in memory Create instance of XmlDocument object Call Load method, providing file name –Other alternative means for loading, as well Work with data in tree-based format Retrieve OuterXml property to view XML
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Reading XML Data Working with Node’s children 1/2 Calling Load method fills data structure –Single root element, possibly other nodes Sample root node contains three children –XML declaration (processing instruction) –Comment –GroceryStore document element XmlDocument inherits from XmlNode class –Document == root node Use HasChildNodes and ChildNodes
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Reading XML Data Working with Node’s children 2/2 Interesting issues: –No recursion Just displays information about the immediate children of selected node –Name properties differ xml, #comment, #text, real names –Checking HasChildNodes is redundant If your intent is to iterate through the nodes
Demonstaration -- 1 Load XML Data Child Nodes Visit All Nodes Elements By Name Text Nodes
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with Nodes Retrieve nodes matching Criteria GetElementsByTagName works well, but limited For more general criteria, use SelectNodes or SelectSingleNode methods of XmlNode Can pass XPath query –XPath is powerful, and complex –Can only touch on it here
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with Nodes Getting started with xPath 1/2 xPath expressions "know" where to start looking, based on object whose method you call Use "//" separator to indicate what follows is a descendant, at any level Use "/" separator to indicate what follows is a direct descendant
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with Nodes Getting started with xPath 2/2 For example: –//Department//Name Looks within Department node (at any lower level) for Name (at any level below Department) Use "*" to look for any element name To match root node of starting object, simply list the name
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with nodes More about XPATH 1/2 To match existence of a child node, –use: //Item[New]/Name Looks for Item that contains a New element, then matches Name element of the Item To match existence of an attribute, use: Looks for a Department node with a Name attribute
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with nodes More about XPATH 2/2 To match specific values, use: 'Fruits'] Once you have the XPath expression, and the retrieved node list, iterate through nodes
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with nodes Reference to specific Node Use XmlNode.SelectSingleNode method Retrieves reference to first matching node Best when: –You know there 's only one match –You actually want a relative (parent?) of the node you find
Demonstaration -- 2 Select Nodes Select Single Node Find Relatives
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Working with nodes Retrieve Node attributes XmlNode.Attributes property retrieves XmlAttributeCollection object Collection of XmlAttribute objects –Nodes with a name, and a value If you just want a single attribute –Use GetNamedItem method of Attributes collection Display all department names? –Name is an attribute of Department element
Demonstaration -- 3 Retrieve Attributes Single Attribute
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME XmlDocument Conclusion Derived from the XmlNode class Represents an entire (in memory) XML document Supports DOM Level 1 and Level 2 Core functionality Reading & writing built on top of XmlReader & XmlWriter Load a document and generate the DOM –Using: URI, file, XmlReader, XmlTextReader or Stream
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Summary In this session, we looked into: –How to load XML data into memory, using the XmlDocument class –How to read through XML data retrieving elements by name by using XPATH by relative path –How to deal with node attributes
Intro to XML DOM Reading XML Data Working with Nodes xPath Expressions Q & A Contact ME Questions ? Request you to drop me a line Doesn’t mean that you forget to post them at B.NET You can expect reply from both mail & at the discussion thread