Decarbonising Buildings: Making a net-zero built environment a reality
XML and XPath details
1. XML DOM Functionality in .NET
DSK Chakravarthy
http://dskc.blogspot.com
dskcheck@msn.com
http://msmvps.com/blogs/Chakravarthy
2. Intro to XML DOM
Reading XML Data
Agenda
Working with Nodes
xPath Expressions
Q&A
Contact ME
• You can see the agenda along the
entire presentation
• Q&A is at the End of session
3. Intro to XML DOM
Reading XML Data
What I talk about
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
4. Intro to XML DOM
Are you ready ?
Reading XML Data
Working with Nodes
xPath Expressions
Q&A
Contact ME
Prerequisites
•Basic Understanding of XML
•Ability to read code
5. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
Getting Started
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
6. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
What I’ll cover now
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
7. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
.NET APIs for working with XML
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
8. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
Tree-Based XML Handling
1/4
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
9. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
Tree-Based XML Handling
2/4
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
10. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
Tree-Based XML Handling
3/4
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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>
11. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
Tree-Based XML Handling
Working with Nodes
xPath Expressions
Q&A
• Into this data structure
bookstore
Contact ME
book
publication date
publication date
publication date
title
author
firstname
lastname
price
4/4
12. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
Non-Cached XML Handling
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
13. Intro to XML DOM
Reading XML Data
Introduction to XML DOM
What is XML DOM?
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
15. Intro to XML DOM
Introduction to XML DOM
Sample file as Datastructure
Reading XML Data
Working with Nodes
Grocery Store
xPath Expressions
departments
Q&A
Contact ME
department
department
Name = “Fruits”
Name = “Breads”
#text
Brain’s Groceries
Item
Item
Id=“B1”
Store name
Name
Id=“F1”
Name
#text
Wonder Bread
Item
Type = “Muffin”
Id=“B2”
Name
#text
Blueberry Muffin
#text
Apple
Price
Price
Price
#text
3.99
#text
1.29
New
New
#text
0.99
16. Intro to XML DOM
Reading XML Data
Reading XML Data
Load XML Data
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
17. Intro to XML DOM
Reading XML Data
Reading XML Data
Working with Node’s children
1/2
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
18. Intro to XML DOM
Reading XML Data
Reading XML Data
Working with Node’s children
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
2/2
20. Intro to XML DOM
Reading XML Data
Working with Nodes
Retrieve nodes matching Criteria
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
21. Intro to XML DOM
Reading XML Data
Working with Nodes
Getting started with xPath
1/2
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
22. Intro to XML DOM
Reading XML Data
Working with Nodes
Getting started with xPath
2/2
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
23. Intro to XML DOM
Reading XML Data
Working with nodes
More about XPATH
1/2
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
24. Intro to XML DOM
Reading XML Data
Working with nodes
More about XPATH
2/2
Working with Nodes
xPath Expressions
Q&A
• To match specific values, use:
– //Department[@Name= 'Fruits']
Contact ME
• Once you have the XPath
expression, and the retrieved
node list, iterate through
nodes
25. Intro to XML DOM
Reading XML Data
Working with nodes
Reference to specific Node
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
27. Intro to XML DOM
Reading XML Data
Working with nodes
Retrieve Node attributes
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
29. Intro to XML DOM
XmlDocument
Conclusion
Reading XML Data
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
30. Intro to XML DOM
Reading XML Data
Summary
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
31. Intro to XML DOM
Reading XML Data
Questions ?
Working with Nodes
xPath Expressions
Q&A
Contact ME
• 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
32. Intro to XML DOM
Reading XML Data
Working with Nodes
xPath Expressions
Q&A
Contact ME
The Webcast Quiz!
• Four questions, multiple choice type
– More than one maybe correct
• Two lucky winners will win an
Orchid Music Player
• If you participate in the contest and
are among the 2 lucky winners, your
name will be featured on
http://www.microsoft.com/india/web
casts/
33. Intro to XML DOM
Reading XML Data
Working with Nodes
1. What are the key themes in the Data
Platform track at TechEd 2006
India?
xPath Expressions
Q&A
Contact ME
A) Programming,
Database
Management and
BI
B) Service Oriented
Architecture and
Robust Data
Management
C) Integrated
D) Future of
Solution Scenarios Computing and
role of real-world
Data Management
Intelligence
34. Intro to XML DOM
Reading XML Data
2. Select 3 core themes under Data
Management at Tech.Ed 2006 India.
Working with Nodes
xPath Expressions
Q&A
A) Security
B) Monitoring and
Analysis
C) Scalability
D) Robust
integration of
Development Tools
and RDBMS
Contact ME
35. Intro to XML DOM
Reading XML Data
3. What is the association between
Tech.Ed-India 2006 and Vineet Gupta?
Working with Nodes
xPath Expressions
Q&A
A) Track Owner
B) Speaker
C) Event Owner
D) Keynote Speaker
Contact ME
36. Intro to XML DOM
4. What is SOA?
Reading XML Data
Working with Nodes
xPath Expressions
Q&A
Contact ME
A) Service
Oriented
Architecture
B) Solutions
Oriented
Architecture
C) Security
Oriented
Architecture
D) Scalable
Operational
Architecture
37. Intro to XML DOM
Reading XML Data
How to Participate
Working with Nodes
xPath Expressions
Q&A
Contact ME
• Please send your responses
to response@erfolgcs.com
– Subject = “Microsoft Webcast
Contest – TechEd 2006 – Data
Platform and Architecture”
It is the Webcast Quiz time.
I will ask you in the next couple of minutes, a set of four questions which will have multiple options. One or more options maybe correct for a question. What you have to do is to note down the answer to the question, and then send your answers to the email address we give later.
Here goes.
I hope every one had enough time to note the answers. You can send your answers to the email address above.
But if you find these questions rather easy,