View
40
Download
0
Category
Tags:
Preview:
DESCRIPTION
XML DOM Functionality in .NET. DSK Chakravarthy http://dskc.blogspot.com dskcheck@msn.com 94496 12273 http://msmvps.com/blogs/Chakravarthy. Agenda. You can see the agenda along the entire presentation Q&A is at the End of session. What I talk about. - PowerPoint PPT Presentation
Citation preview
XML DOM Functionality in .NET
DSK Chakravarthyhttp://dskc.blogspot.com
dskcheck@msn.com94496 12273
http://msmvps.com/blogs/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 DOMGetting 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 DOMWhat 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 DOMTree-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 DOMTree-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 DOMTree-Based XML Handling 3/4
• Turns this XML content:Turns this XML content:<bookstore> <book genre="novel" publicationdate="1997" ISBN="1-861001-57-8"> <title>Pride And Prejudice</title> <author> <first-name>Jane</first-name> <last-name>Austen</last-name> </author> <price>24.95</price> </book> </bookstore>
Intro to XML DOM
Reading XML Data
Working with Nodes
xPath Expressions
Q & A
Contact ME
Introduction to XML DOMTree-Based XML Handling 4/4
• Into this data structureInto this data structure
bookstore
book
publication datepublication date
publication datetitle
author
price
firstname
lastname
Intro to XML DOM
Reading XML Data
Working with Nodes
xPath Expressions
Q & A
Contact ME
Introduction to XML DOMNon-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 DOMWhat 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 DOMSample file as Datastructure
Grocery Store
Name = “Breads”
Store name
#textBrain’s Groceries
department
Name = “Fruits”
department
departments
Item
Id=“B1”Name
#textWonder Bread
Price
#text1.29
New
Item
Id=“B2”
Name
#textBlueberry Muffin
Price
#text3.99
New
Type = “Muffin” Item
Id=“F1”
Name
#textApple
Price
#text0.99
Intro to XML DOM
Reading XML Data
Working with Nodes
xPath Expressions
Q & A
Contact ME
Reading XML DataLoad 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 DataWorking 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 DataWorking 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 DataChild Nodes
Visit All NodesElements By Name
Text Nodes
Intro to XML DOM
Reading XML Data
Working with Nodes
xPath Expressions
Q & A
Contact ME
Working with NodesRetrieve 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 NodesGetting 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 NodesGetting 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 nodesMore 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:– //Item[@Type]
• 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 nodesMore about XPATH 2/2
• To match specific values, use: – //Department[@Name= '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 nodesReference 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 NodesSelect Single Node
Find Relatives
Intro to XML DOM
Reading XML Data
Working with Nodes
xPath Expressions
Q & A
Contact ME
Working with nodesRetrieve 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
XmlDocumentConclusion
• 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
Recommended