IT tutorials
 
Database
 

SQL Server 2012 : Using XML Data - XML Data Type Methods

2/10/2014 12:38:53 AM
- Free product key for windows 10
- Free Product Key for Microsoft office 365
- Malwarebytes Premium 3.7.1 Serial Keys (LifeTime) 2019

The XML data type supports a number of methods providing various operations on the XML document. An operation on an XML document is applied to one or more elements or attributes at a specific location. To perform an operation, the location of the specific element needs to be specified.

Common operations on XML documents typically involve reading values from elements or attributes, querying for information, or making modifications to the XML document by inserting, updating, or deleting elements or attributes.

This section begins with an overview of the XPath language to provide a foundation in which to cover the methods.

XPath

XPath is an expression language that provides quick and efficient processing of values and the locating of XML elements and attributes in an XML document. It also allows for easy navigation through an XML tree.

The concept is that each element and attribute has a unique “path,” for example:

<Items>
<ItemNumber>1234</ItemNumber>
<ItemNumber>2345</ItemNumber>
</Items>

In the preceding code, the path to the first ItemNumber element is /Items/ItemNumber[1], and the path to the second ItemNumber element is /Items/ItemNumber[2]. Each element and attribute within an XML document can be uniquely identified and processed using an XPath expression.

All the XML data type methods accept XPath expressions to specify the target element or attribute on which the given operation is performed.

XPath is a language used to create expressions that can address parts of an XML document. It can also be used to manipulate numbers and strings, and can match a set of nodes in an XML document. As such, we can use XPath to identify nodes in an XML document based on their type, name, and values.

value()

The value() method is the most useful of the methods, providing the ability to retrieve scalar values from an XML document as relational columns. The value() method takes an XQuery expression and evaluates the expression to a single node. During the process the results are cast to the specified SQL Server data type and returned. The following example illustrates this using an XML variable.

DECLARE @var xml
SET @var = ‘<Order OrderID="1">
<Item>
<ItemNumber>V001</ItemNumber>
<Quantity>1</Quantity>
<Price>299.99</Price>
</Item>
</Order>'

SELECT @var.value('(Order/@OrderID)[1]', ‘INT') as orderid,
@var.value('(Order/Item/ItemNumber)[1]', ‘NVARCHAR(50)') as itemnumber

The following example illustrates the same functionality but directly queries an
XML data type column.
SELECT ItemData.value('(Order/@OrderID)[1]', ‘INT') as orderid,
ItemData.value('(Order/Item/ItemNumber)[1]', ‘NVARCHAR(50)') as itemnumber
FROM ItemInfo

nodes()

Suppose you want to return the values from nodes that match a specific expression. The nodes() method returns a rowset representation of the XML document. An XQuery operation can be performed on each node returned by the nodes() method.

DECLARE @var xml
SET @var = ‘
<Item>
<ItemNumber>V001</ItemNumber>
<ItemNumber>A017</ItemNumber>
<ItemNumber>P002</ItemNumber>
</Item>'

SELECT var.value('.','NVARCHAR(10)') as ItemNumber
FROM @var.nodes('/Item/ItemNumber') o(var)

The following example illustrates the same functionality but directly queries an XML data type column.

SELECT OrderID,
ItemData.value('(Order/Item/ItemNumber)[1]', ‘NVARCHAR(50)') as itemnumber
FROM ItemInfo
CROSS APPLY ItemData.nodes('/Order/Item') o(x)

The question from the preceding example is why CROSS APPLY is used. When working with XML columns, multiple XML documents are processed in a single batch. The CROSS APPLY operator helps with this processing.

exist()

The exist()method checks for the existence of a specified element or attribute specified in the XPath expression. The following example uses the exist() method to filter rows that have a specific item number:

SELECT OrderID
FROM ItemInfo
WHERE ItemData.exist('Order/Item/ItemNumber = "A017"') = 1

The exist() method returns true (1) if an element or attribute exists in the XML document that is specified in the XPath expression.

query() and modify()

The query() method takes an XQuery expression and evaluates it to a list of XML elements that can be accessed and processed further. The modify() method is used to modify XML documents, either insert, update, and delete operations on elements or attributes.

 
Others
 
 
 
Top 10
 
- Microsoft Visio 2013 : Adding Structure to Your Diagrams - Finding containers and lists in Visio (part 2) - Wireframes,Legends
- Microsoft Visio 2013 : Adding Structure to Your Diagrams - Finding containers and lists in Visio (part 1) - Swimlanes
- Microsoft Visio 2013 : Adding Structure to Your Diagrams - Formatting and sizing lists
- Microsoft Visio 2013 : Adding Structure to Your Diagrams - Adding shapes to lists
- Microsoft Visio 2013 : Adding Structure to Your Diagrams - Sizing containers
- Microsoft Access 2010 : Control Properties and Why to Use Them (part 3) - The Other Properties of a Control
- Microsoft Access 2010 : Control Properties and Why to Use Them (part 2) - The Data Properties of a Control
- Microsoft Access 2010 : Control Properties and Why to Use Them (part 1) - The Format Properties of a Control
- Microsoft Access 2010 : Form Properties and Why Should You Use Them - Working with the Properties Window
- Microsoft Visio 2013 : Using the Organization Chart Wizard with new data
Technology FAQ
- Is possible to just to use a wireless router to extend wireless access to wireless access points?
- Ruby - Insert Struct to MySql
- how to find my Symantec pcAnywhere serial number
- About direct X / Open GL issue
- How to determine eclipse version?
- What SAN cert Exchange 2010 for UM, OA?
- How do I populate a SQL Express table from Excel file?
- code for express check out with Paypal.
- Problem with Templated User Control
- ShellExecute SW_HIDE
programming4us programming4us