<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: xpath code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 21 Aug 2008 12:13:39 GMT</pubDate>
    <description>DZone Snippets: xpath code</description>
    <item>
      <title>Some simple javascript xpath examples</title>
      <link>http://snippets.dzone.com/posts/show/5272</link>
      <description>// Some simple javascript xpath examples&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var canCElC = document.evaluate( '//a[@class="canc"]' ,document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );&lt;br /&gt;&lt;br /&gt;for (var m = 0; m &lt; canCElC.snapshotLength; m++){&lt;br /&gt;&lt;br /&gt;	var im = canCElC.snapshotItem(m);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var mems = document.evaluate( '//a[contains(@href, "profile")][ not( @class = "skyblue" )]' ,document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );&lt;br /&gt;&lt;br /&gt;for (var l = 0; l &lt; mems.snapshotLength; l++){&lt;br /&gt;&lt;br /&gt;	var cThis = mems.snapshotItem(l);&lt;br /&gt;&lt;br /&gt;}	&lt;br /&gt;&lt;br /&gt;var canHazPics = document.evaluate( '//a[@title= "Click for large image"]' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;&lt;br /&gt;&lt;br /&gt;document.evaluate( 'html/body/div/div[7]/table/tbody/tr[2]/td[ not( contains(@id, "main") )]' ,document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );&lt;br /&gt;&lt;br /&gt;for(...&lt;br /&gt;&lt;br /&gt;//bravo's xpath function shortcut&lt;br /&gt;// if you don't have $x already&lt;br /&gt;function $x(p, c) {&lt;br /&gt;	var i, r = [], x = document.evaluate(p, c || document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);&lt;br /&gt;	while(i=x.iterateNext()) r.push(i);&lt;br /&gt;	return r;&lt;br /&gt;}&lt;br /&gt;//&lt;br /&gt;// a function to change history days in links&lt;br /&gt;//&lt;br /&gt;// Usage: ChangeDays(n); where n is 1, 3, 7, 14, 30 or 60 - not sure what other values may do to poor Simones Site&lt;br /&gt;//&lt;br /&gt;function ChangeDays(d) {&lt;br /&gt;	$x('//a[contains(@href, "/forum-user.cfm?id=")][not(contains(@href, "days="))]').forEach(function(e) {&lt;br /&gt;		e.setAttribute('href', e.getAttribute('href').replace(/cfm\?id=/, 'cfm?days='+d+'&amp;id='));&lt;br /&gt;	});&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// more bravo stuff&lt;br /&gt;&lt;br /&gt;// getById&lt;br /&gt;function $i(id) {&lt;br /&gt;	return document.getElementById(id);&lt;br /&gt;}&lt;br /&gt;// xpath unordered nodes&lt;br /&gt;function $xu(p, c) {&lt;br /&gt;	var i, r = [], x = document.evaluate(p, c || document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);&lt;br /&gt;	while(i=x.iterateNext()) r.push(i);&lt;br /&gt;	return r;&lt;br /&gt;}&lt;br /&gt;// xpath ordered nodes&lt;br /&gt;function $xo(p, c) {&lt;br /&gt;	var i, r = [], x = document.evaluate(p, c || document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);&lt;br /&gt;	while(i=x.iterateNext()) r.push(i);&lt;br /&gt;	return r;&lt;br /&gt;}&lt;br /&gt;// xpath single first node&lt;br /&gt;function $xf(p, c) {&lt;br /&gt;	return document.evaluate(p, c || document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;&lt;br /&gt;}&lt;br /&gt;// xpath single any node&lt;br /&gt;function $xa(p, c) {&lt;br /&gt;	return document.evaluate(p, c || document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;&lt;br /&gt;}&lt;br /&gt;// getByCLASS(className, orderedFlag);&lt;br /&gt;// untested!!&lt;br /&gt;function $c(cls, o) {&lt;br /&gt;	var fn=$xu;&lt;br /&gt;	if(o) fn=$xo;&lt;br /&gt;	return fn('//*[@class = "'+cls+'"' +&lt;br /&gt;				' or contains(@class, " '+cls+' ")' +&lt;br /&gt;				' or starts-with(@class, "' +cls+' ")' +&lt;br /&gt;				' or substring(@class,string-length(@class)-'+cls.length+')=" '+cls+'"]');&lt;br /&gt;}&lt;br /&gt;// create Element&lt;br /&gt;function $ec(type, attributes){&lt;br /&gt;	var node = document.createElement(type);&lt;br /&gt;	for (var attr in attributes) if (attributes.hasOwnProperty(attr)){&lt;br /&gt;		node.setAttribute(attr, attributes[attr]);&lt;br /&gt;	}&lt;br /&gt;	return node;&lt;br /&gt;}&lt;br /&gt;// delete Element&lt;br /&gt;function $ed(element) {&lt;br /&gt;	element.parentNode.removeChild(element);&lt;br /&gt;}&lt;br /&gt;// insert element after&lt;br /&gt;function $ea(newNode, node) {&lt;br /&gt;	return node.parentNode.insertBefore(newNode, node.nextSibling);&lt;br /&gt;}&lt;br /&gt;// insert element before&lt;br /&gt;function $eb(newNode, node) {&lt;br /&gt;	return node.parentNode.insertBefore(newNode, node);&lt;br /&gt;}&lt;br /&gt;// make element first child of par&lt;br /&gt;function $ef(newNode, par) {&lt;br /&gt;	return par.insertBefore(newNode, par.firstChild);&lt;br /&gt;}&lt;br /&gt;// make element last child of par&lt;br /&gt;function $el(newNode, par) {&lt;br /&gt;	return par.appendChild(newNode);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 23 Mar 2008 04:54:41 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5272</guid>
      <author>Yansky (Yansky)</author>
    </item>
  </channel>
</rss>
