1 / 31

XML DOM Functionality in .NET

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.

maxima
Download Presentation

XML DOM Functionality in .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML DOM Functionality in .NET DSK Chakravarthy http://dskc.blogspot.com dskcheck@msn.com 94496 12273 http://msmvps.com/blogs/Chakravarthy

  2. Agenda • You can see the agenda along the entire presentation • Q&A is at the End of session

  3. 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

  4. Are you ready ? • Prerequisites • Basic Understanding of XML • Ability to read code

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. Introduction to XML DOMTree-Based XML Handling 3/4 • 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. Introduction to XML DOMTree-Based XML Handling 4/4 • Into this data structure bookstore book publication date publication date publication date title author firstname lastname price

  12. 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

  13. 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

  14. Demonstaration -- 0 investigating a sample file – Grocery store

  15. Grocery Store departments Store name department #text Brain’s Groceries department Name = “Fruits” Name = “Breads” Item Item Item Type = “Muffin” Id=“B2” Id=“B1” Name Id=“F1” Name Name #text Wonder Bread #text Blueberry Muffin #text Apple Price Price Price #text 3.99 #text 1.29 #text 0.99 New New Introduction to XML DOMSample file as Datastructure

  16. 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

  17. 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

  18. 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

  19. Demonstaration -- 1 Load XML Data Child Nodes Visit All Nodes Elements By Name Text Nodes

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. Demonstaration -- 2 Select Nodes Select Single Node Find Relatives

  27. 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

  28. Demonstaration -- 3 Retrieve Attributes Single Attribute

  29. XmlDocumentConclusion • Derived from the XmlNodeclass • 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. 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

  31. 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

More Related