1 - XmlDocument - W3C, DOM Level 2, Read-Write
namespace: System.Xml
associated types: XmlNode, XmlAttribute, XmlAttributeCollection
load from file: Load (Stream) , Load (URL), LoadXml (String)
search / iterate:
SelectNodes ( xpath string ), SelectSingleNode ( xpath string )
XmlNode.Name, Attributes, FirstChild, ChildNodes, Item: ["name"] , NextSibling
2 - XPATH Search ( W3Schools: http://www.w3schools.com/Xpath/default.asp )
| Expression | Description |
| nodename | Selects all child nodes of the named node |
| / | Selects from the root node |
| // | Selects nodes in the document from the current node that match the selection no matter where they are |
| . | Selects the current node |
| .. | Selects the parent of the current node |
| @ | Selects attributes |
| Path Expression | Result |
| bookstore | Selects all the child nodes of the bookstore element |
| /bookstore | Selects the root element bookstore
Note: If the path starts with a slash ( / ) it always represents an absolute path to an element! |
| bookstore/book | Selects all book elements that are children of bookstore |
| //book | Selects all book elements no matter where they are in the document |
| bookstore//book | Selects all book elements that are descendant of the bookstore element, no matter where they are under the bookstore element |
| //@lang | Selects all attributes that are named lang |
| Path Expression | Result |
| /bookstore/book[1] | Selects the first book element that is the child of the bookstore element.
Note: IE5 and later has implemented that [0] should be the first node, but according to the W3C standard it should have been [1]!! |
| /bookstore/book[last()] | Selects the last book element that is the child of the bookstore element |
| /bookstore/book[last()-1] | Selects the last but one book element that is the child of the bookstore element |
| /bookstore/book[position()<3] | Selects the first two book elements that are children of the bookstore element |
| //title[@lang] | Selects all the title elements that have an attribute named lang |
| //title[@lang='eng'] | Selects all the title elements that have an attribute named lang with a value of 'eng' |
| /bookstore/book[price>35.00] | Selects all the book elements of the bookstore element that have a price element with a value greater than 35.00 |
| /bookstore/book[price>35.00]/title | Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 35.00 |
XPath wildcards can be used to select unknown XML elements.
| Wildcard | Description |
| * | Matches any element node |
| @* | Matches any attribute node |
| node() | Matches any node of any kind |
| Path Expression | Result |
| /bookstore/* | Selects all the child nodes of the bookstore element |
| //* | Selects all elements in the document |
| //title[@*] | Selects all title elements which have any attribute |
| Operator | Description | Example | Return value |
| | | Computes two node-sets | //book | //cd | Returns a node-set with all book and cd elements |
| + | Addition | 6 + 4 | 10 |
| - | Subtraction | 6 - 4 | 2 |
| * | Multiplication | 6 * 4 |
24 |
| div | Division | 8 div 4 | 2 |
| = | Equal | price=9.80 | true if price is 9.80 false if price is 9.90 |
| != | Not equal | price!=9.80 | true if price is 9.90 false if price is 9.80 |
| < | Less than | price<9.80 | true if price is 9.00 false if price is 9.80 |
| <= | Less than or equal to | price<=9.80 | true if price is 9.00 false if price is 9.90 |
| > | Greater than | price>9.80 | true if price is 9.90 false if price is 9.80 |
| >= | Greater than or equal to | price>=9.80 | true if price is 9.90 false if price is 9.70 |
| or | or | price=9.80 or price=9.70 | true if price is 9.80 false if price is 9.50 |
| and | and | price>9.00 and price<9.90 | true if price is 9.80 false if price is 8.50 |
| mod | Modulus (division remainder) | 5 mod 2 | 1 |
"//EXAMPLE/CUSTOMER[@id='2' or @type='C']"
"//EXAMPLE/CUSTOMER[@id='2' and @type='B']"
"//EXAMPLE/CUSTOMER[@id='1' and (@type='B' or @type='C')]"
"//EXAMPLE/CUSTOMER[contains(@type,'DECEA')]"
3 - XPathNavigator - Read-only
4 - XDocument - supports LINQ, Read-Write
namespace: System.Xml.Linq
associated types: XName, XElement
load from file: Load ("filename" )
search / iterate:
XElement : Attribute("name"), Attributes( ["name"] ), Element, Elements( ["name"] ),