<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blog.4penny.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>XML</title><link>http://blog.4penny.net/blogs/xml/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Simple tasks </title><link>http://blog.4penny.net/blogs/xml/archive/2007/07/02/simple-tasks.aspx</link><pubDate>Mon, 02 Jul 2007 16:31:00 GMT</pubDate><guid isPermaLink="false">05d3ee43-09e1-4c21-9d53-64ecaf1acc4f:471</guid><dc:creator>Steve Gray</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.4penny.net/blogs/xml/rsscomments.aspx?PostID=471</wfw:commentRss><comments>http://blog.4penny.net/blogs/xml/archive/2007/07/02/simple-tasks.aspx#comments</comments><description>&lt;p&gt;Here are a couple of simple tasks in XML for VB.NET&lt;/p&gt;
&lt;p&gt;sXML string equals the following &lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;#39;1.0&amp;#39;?&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;EXAMPLE&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CUSTOMER id=&amp;quot;1&amp;quot; type=&amp;quot;B&amp;quot;&amp;gt;Mr.&amp;nbsp; Jones&amp;lt;/CUSTOMER&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CUSTOMER id=&amp;quot;2&amp;quot; type=&amp;quot;C&amp;quot;&amp;gt;Mr.&amp;nbsp; Johnson&amp;lt;/CUSTOMER&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/EXAMPLE&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;% &lt;br /&gt;&lt;br /&gt;&amp;nbsp; Dim oXMLDoc &lt;br /&gt;&amp;nbsp; Dim oXMLNode &lt;br /&gt;&amp;nbsp; Dim oXMLNodeList &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Set oXMLDoc =&amp;nbsp; Server.CreateObject(&amp;quot;MSXML2.DOMDocument.4.0&amp;quot;) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oXMLDoc.LoadXML(sXML) &lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set oXMLNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[@id=&amp;#39;2&amp;#39; or @type=&amp;#39;C&amp;#39;]&amp;quot;) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; oXMLNode.Text will show &amp;quot;Mr Johnson&amp;quot; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set oXMLNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[@id=&amp;#39;1&amp;#39; and @type=&amp;#39;B&amp;#39;]&amp;quot;) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; oXMLNode.Text will show &amp;quot;Mr Jones&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; oXMLNode.Attributes.getNamedItem(&amp;quot;id&amp;quot;).Text will show &amp;quot;1&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; oXMLNode.Attributes.getNamedItem(&amp;quot;type&amp;quot;).Text will show &amp;quot;B&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;#39; Select a node list where id equals 1 and the type equals B or C.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;#39; In our example, only Mr.&amp;nbsp; Jones will be returned. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Set oXMLNodeList = oXMLDoc.selectNodes(&amp;quot;//EXAMPLE/CUSTOMER[@id=&amp;#39;1&amp;#39; and (@type=&amp;#39;B&amp;#39; or @type=&amp;#39;C&amp;#39;)]&amp;quot;) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; oXMLNode.Text will show &amp;quot;Mr Jones&amp;quot; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;#39; Select a node with a specific text value &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Set oXMLNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[.&amp;nbsp; =&amp;#39;Mr.&amp;nbsp; Johnson&amp;#39;]&amp;quot;) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; oXMLNode.Text will show &amp;quot;Mr.&amp;nbsp; Johnson&amp;quot; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;#39; Select node list of all nodes with CUSTOMER not equal to &amp;quot;EggHeadCafe&amp;quot; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; oXMLNodeList.selectNodes(&amp;quot;//EXAMPLE/CUSTOMER[.&amp;nbsp; !=&amp;#39;EggHeadCafe&amp;#39;]&amp;quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#39;&amp;nbsp; Start of MSXML4 or higher features.&amp;nbsp;&amp;nbsp; If you want to use MSXML3, then &lt;br /&gt;&amp;#39;&amp;nbsp; you&amp;#39;ll need to set the following:&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oXMLDoc.setProperty &amp;quot;SelectionLanguage&amp;quot;, &amp;quot;XPath&amp;quot; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#39; Search for a substring in an attribute &lt;br /&gt;&lt;br /&gt;Set oXMLNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[substring(@type,1,2) =&amp;#39;DE&amp;#39;]&amp;quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;#39; Search for a substring in a node value &lt;br /&gt;&lt;br /&gt;Set oXMLNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[substring(.,1,3) =&amp;#39;Mr.&amp;#39;]&amp;quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;#39; Search for a value contained in an attribute &lt;br /&gt;&lt;br /&gt;Set oXMLNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[contains(@type,&amp;#39;DECEA&amp;#39;)]&amp;quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;#39; Search for a contained in a node value &lt;br /&gt;&lt;br /&gt;Set oXMLNode =&amp;nbsp; oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE/CUSTOMER[contains(.,&amp;#39;Smith&amp;#39;)]&amp;quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;#39; Search only from root of selected node.&amp;nbsp;&amp;nbsp; This examples gets a list of nodes &lt;br /&gt;&amp;#39; from a specific node not the whole XML document.&amp;nbsp;&amp;nbsp; This XML document &lt;br /&gt;&amp;#39; is too small to be a reasonable example but you get the idea.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;#39; The &amp;quot;.//&amp;quot; tells the parser to make the current node the &amp;quot;root&amp;quot; node of the &lt;br /&gt;&amp;#39; document for this specific XPath query.&amp;nbsp;&amp;nbsp; Without the &amp;quot;.&amp;quot;, the XPath query &lt;br /&gt;&amp;#39; would return all CUSTOMER nodes in the entire document even though &lt;br /&gt;&amp;#39; they may be above or below the current node. &lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set oNode = oXMLDoc.selectSingleNode(&amp;quot;//EXAMPLE&amp;quot;) &lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set oXMLTreeList = oNode.selectNodes(&amp;quot;.//CUSTOMER&amp;quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nTot = oXMLTreeList.length - 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For nCnt = 0 to nTot &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oXMLNode = oXMLTreeList.nextNode() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msgbox&amp;nbsp; oXMLNode.Attributes.getNamedItem(&amp;quot;id&amp;quot;).Text&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#39;&amp;nbsp; End of MSXML4 or higher features&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Set oXMLNode = nothing &lt;br /&gt;Set oXMLDoc = nothing &lt;br /&gt;&lt;br /&gt;%&amp;gt; &lt;br /&gt;&lt;/p&gt;&lt;img src="http://blog.4penny.net/aggbug.aspx?PostID=471" width="1" height="1"&gt;</description></item></channel></rss>