|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
IntroductionThis is an advanced version of the good XPath Analyzer done by Enrico Elizar Samuel (http://www.codeproject.com/aspnet/xpathanalyzer.asp). Advanced XPath Analyzer has been re-written in C# and supports namespaces resolution and navigation. Notes about the codeThe main difference from the original XPath Analyzer is that you can navigate
into an XML document using qualified names. It is also possibile to have a
default namespace in the XML document. In this case a the namespace prefix will
be Let's say that, for example, we have an XML document that looks like this one: <?xml version="1.0" encoding="utf-8"?>
<items link="~/Html/Default.htm" xmlns=http://site/menu
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemalocation="http://site/menu menu.xsd">
<item title="Products" link="#">
<item title="Product 1" link="#"/>
<item title="Product 2" link="#"/>
<item title="Product 3" link="#"/>
<item title="Product 4" link= "#"/>
</item>
<item title="Services" link="#">
<item title="Service 1" link="#" />
<item title="Service 2" link="#" />
</item>
<item title="People" link="#"/>
<item title="Opening Hours" link="#"/>
<item title="Prices" link="#"/>
<item title="Contacts" link="#"/>
</items>
That is, as you may have guessed, the navigation menu of a simple website. If
you need to get the Product 3 link, you should write an XPath query
like: but this query won't give any result! This because you need to specify that
the elements /def:items/def:item[@title='Products']in order to run correctly this query you first need to define that the prefix
That, in pratice, means to write something like: XmlNamespaceManager namespaceManager =
new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace(prefix, uri);
XPathExpression expression = navigator.Compile(xpathQuery);
expression.SetContext(namespaceManager);
Where Using the programYou have to specify the XML source file (which can be a file on your hard disk or a file somewhere in the web) and then the XPath Query you'd like to test. You can also specify a SQLXML url so that you can test your SQLXML Queries. If your XML uses namespaces you have to add it in the left panel so that you can use them in your XPath Query, otherwise you can detect it automatically, clickin' on the Detect Namespace button. Of course remember to do this before you analyze the XPath Query! Location of XML document:
XPath query:
History
|
||||||||||||||||||||||