XML, Special Characters, Select XML Node, Update XML Node, Select Records Into XML Structure

XML Special Characters


-- Declare variables
DECLARE @lxml_value XML;

-- Set XML values
SET @lxml_value = '<Detail>
                     <Name>Testing XML &amp; Special Characters</Name>
                     <Name>222222</Name>
                     <Address>Test XML&apos;s address</Address>
                     <Quote>&quot;Quote&quot;</Quote>
                     <Compare1>10 &lt; 20</Compare1>
                     <Compare2>10 &gt; 5</Compare2>
                  </Detail>'

-- Select vales from XML
SELECT @lxml_value.value('(/Detail/Name)     [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Name)     [2]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Address)  [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Quote)    [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Compare1) [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Compare2) [1]', 'VARCHAR(100)');

Update XML Node

-- Create a schema for your XML data
CREATE XML SCHEMA COLLECTION my_xml_schema
AS
'<xsd:schema elementFormDefault="unqualified" attributeFormDefault="unqualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xsd:element name="Transaction">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Type" type="xsd:string"/>
            <xsd:element name="Code" type="xsd:string"/>
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
</xsd:schema>'
GO

-- Declare variables
DECLARE @lv_type   VARCHAR(10);
DECLARE @lxml_data XML(my_xml_schema); -- Declare this using the schema created above

-- Set change value
SET @lv_type = 'Change';

-- Set the XML data
SET @lxml_data = '<Transaction>
                    <Type>Node Type</Type>
                    <Code>Node Code</Code>
                 </Transaction>';

-- Check XML data
SELECT @lxml_data;

-- Modify the XML data
SET @lxml_data.modify('replace value of (/Transaction [1]/Type [1]) with sql:variable("@lv_type")');

-- Check XML data
SELECT @lxml_data;

-- Drop XML schema
DROP XML SCHEMA COLLECTION my_xml_schema
GO

Select XML Node Values from XML Field

-- Declare variables
DECLARE @lxml_value XML;

-- Create table with XML colum
CREATE TABLE tmp_xml (xml_col XML);

-- Set XML variables
SET @lxml_value = '<Transaction>
                     <Node1>Value 1</Node1>
                     <Node2>Value 2</Node2>
                     <Node3>Value 3</Node3>
                     <Node4>Value 4</Node4>
                     <Node5>Value 5</Node5>
                  </Transaction>';

-- Insert XML file into temp table
INSERT INTO tmp_xml
          (xml_col)
VALUES     (@lxml_value);

-- Select the results from XML nodes
SELECT tt.xml_col.value('(/Transaction/Node1) [1]', 'VARCHAR(10)') xml_node_1,
      tt.xml_col.value('(/Transaction/Node2) [1]', 'VARCHAR(10)') xml_node_2,
      tt.xml_col.value('(/Transaction/Node3) [1]', 'VARCHAR(10)') xml_node_3,
      tt.xml_col.value('(/Transaction/Node4) [1]', 'VARCHAR(10)') xml_node_4,
      tt.xml_col.value('(/Transaction/Node5) [1]', 'VARCHAR(10)') xml_node_5
FROM   dbo.tmp_xml tt;

-- Drop temp table
DROP TABLE tmp_xml;

Select Records Into XML Structure


Table Table1:
id          name                                               des
----------- -------------------------------------------------- --------------------------------------------------
1           Cổ trục máy nghiền nhiều                           chiều nay mưa trên phố huế
2           ví dụ dùng SQL                                     vãi hàng
3           Bạn chỉ cần search trong database xem              chạy đua tốc độ
4           gần đúng có trên internet rất nhiều                tình không biên giới
5           Thuật toán tìm kiếm gần đúng 1 xâu                 mãi mãi 1 tình yêu
6           nhiều lắm ấy                                       chiều mưa bong bóng

SELECT  *
FROM Table1
FOR XML AUTO, ROOT;
--FOR XML PATH ('Element')

Out put:
<root>  <Table1 id="1" name="Cổ trục máy nghiền nhiều" des="chiều nay mưa trên phố huế" />  <Table1 id="2" name="ví dụ dùng SQL" des="vãi hàng" />  <Table1 id="3" name="Bạn chỉ cần search trong database xem" des="chạy đua tốc độ" />  <Table1 id="4" name="gần đúng có trên internet rất nhiều" des="tình không biên giới" />  <Table1 id="5" name="Thuật toán tìm kiếm gần đúng 1 xâu" des="mãi mãi 1 tình yêu" />  <Table1 id="6" name="nhiều lắm ấy" des="chiều mưa bong bóng" /></root>