How to get the XML path of an XmlNode?

How can I get the full XML path (as string) of a specific XmlNode ?


-- 
Thanks
Sharon
0
SharonG1 (8)
11/20/2006 9:03:01 AM
dotnet.xml 7266 articles. 0 followers. Follow

7 Replies
568 Views

Similar Articles

[PageSpeed] 10

Sharon wrote:
> How can I get the full XML path (as string) of a specific XmlNode ?

What is "the full XML Path" of a node, do you have any definition for 
that? Some XML editors can assist you constructing or maybe even 
generating an XPath expression.


-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
0
mahotrash (1778)
11/20/2006 12:48:26 PM
Lets say I have the following XML file:

<?xml version="1.0" encoding="utf.8"?>
<System Name = "System">
  <Parameters>
    <T1>
     <T2>
       <T3>
            <L3.1>111</L3.1>
            <L3.1>222</L3.1>
            <L3.1>333</L3.1>
            <L3.1>444</L3.1>
            <L3.1>555</L3.1>
       </T3>
     </T2>
    </T1>
  </Parameters>
</System>


And in some point in the code, someone does:
XmlDocument doc = new XmlDocument();
doc.LoadXml( XmlFilenAme );
XmlNode xNode = doc.SelectSingleNode("//System/Parameters/T1/T2/T3/L3.1");

And passes this xNode to me in some other piece of code.

Now I need to know the full XML path of the given node, that in this case is 
the "//System/Parameters/T1/T2/T3/L3.1".



So the question is: How can I figure out the full XML path of any given 
System.Xml.XmlNode ?


-----
Thanks
Sharon
0
SharonG1 (8)
11/20/2006 1:17:02 PM
      http://www.topxml.com/code/default.asp?p=3&id=v20010323001030


Cheers,
Dimitre Novatchev


"Sharon" <SharonG@newsgroups.nospam> wrote in message 
news:521FBE3C-23C9-4E07-9332-ED0ED3F1800B@microsoft.com...
> Lets say I have the following XML file:
>
> <?xml version="1.0" encoding="utf.8"?>
> <System Name = "System">
>  <Parameters>
>    <T1>
>     <T2>
>       <T3>
>            <L3.1>111</L3.1>
>            <L3.1>222</L3.1>
>            <L3.1>333</L3.1>
>            <L3.1>444</L3.1>
>            <L3.1>555</L3.1>
>       </T3>
>     </T2>
>    </T1>
>  </Parameters>
> </System>
>
>
> And in some point in the code, someone does:
> XmlDocument doc = new XmlDocument();
> doc.LoadXml( XmlFilenAme );
> XmlNode xNode = doc.SelectSingleNode("//System/Parameters/T1/T2/T3/L3.1");
>
> And passes this xNode to me in some other piece of code.
>
> Now I need to know the full XML path of the given node, that in this case 
> is
> the "//System/Parameters/T1/T2/T3/L3.1".
>
>
>
> So the question is: How can I figure out the full XML path of any given
> System.Xml.XmlNode ?
>
>
> -----
> Thanks
> Sharon 


0
11/20/2006 3:01:24 PM
Dimitre, thanks for your reply.
After looking at the link you have posted, I'm afraid I don't understand it.
In this link page I see only XML file. But I need to find the node XML path 
by code, like the C# using any standard parser.


------
Thanks
Sharon
0
SharonG1 (8)
11/20/2006 3:27:02 PM
On Mon, 20 Nov 2006 07:27:02 -0800, Sharon wrote:

> Dimitre, thanks for your reply.
> After looking at the link you have posted, I'm afraid I don't understand it.
> In this link page I see only XML file. But I need to find the node XML path 
> by code, like the C# using any standard parser.
> 
> 
> ------
> Thanks
> Sharon

The problem you have is that it is very complex to identify the index of
the elements in a node path, and that's what the example Dimittre posted is
doing.
An XmlNode has a ParentNode method, so you can just walk back up the tree,
reading the name of each node, and that might give you something like
System/Parameters/T1/T2/T3/L3.1
The problem is that you also need the index of items that are part of a
repeating node:
System/Parameters/T1/T2/T3/L3.1[3]

Your example says 'doc.SelectSingleNode', but there are 5 nodes in your
document, so walking back up the tree will give you a simple XPath to the
first node (if there are no repeating elements further up the tree), but
this is a far from suitable solution.

Why do you need the XPath expression? What is it being used for?

Cheers,
 Gadget
0
gadget1 (19)
11/20/2006 9:01:29 PM
"Sharon" <SharonG@newsgroups.nospam> wrote in message 
news:4283C7C2-F832-469F-B1A6-B3BAB09FA724@microsoft.com...
> Dimitre, thanks for your reply.
> After looking at the link you have posted, I'm afraid I don't understand 
> it.
> In this link page I see only XML file. But I need to find the node XML 
> path
> by code, like the C# using any standard parser.


Sharon,

The XSLT code is probably simpler than any C# code doing the same and much 
more portable.

If I can say one thing to be remembered is that at present XSLT is the best 
programming language for tree manipulation/transformation.

It is also not a bad functional programming language and has some very 
efficient implementations.


Cheers,
Dimitre Novatchev


0
11/21/2006 4:54:55 AM
Sharon wrote:
> How can I get the full XML path (as string) of a specific XmlNode ?

Open the file in Emacs with psgml.
Press C-c C-w

That gives you the element descendancy.
Change all occurrences of "in" to a slash to get a path.

If you need the enumerated descendancy (as you imply by the use of the 
word "full"), install David Megginson's psgml-xpointer.el and type
M-x sgml-xpointer RET

That gives you the full (TEI-format) location ladder. I don't know of a 
function to return the XPath, but there's probably one out there. Most 
other decent editors will have similar functions.

///Peter
-- 
XML FAQ: http://xml.silmaril.ie/
0
Peter
11/26/2006 11:48:49 PM
Reply:

Similar Artilces:

XML serialization , validating against multiple schemas
Hi My web service receives an object of type say MyObject. I want to serialize this object,and then validate the xml against the main xsd. When validation happens, it should also validate against the included schema. The main schema includes one more schema and the actual types are described in the included schema. eg., <xs:schema xmlns:t="http://myschemas/base" xmlns=""> <xs:import schemaLocation="base.xsd" /> <xs:element name="MyObject"> <xs:complexType> <xs:sequence minOccurs="0"> <xs:element name=&...

i get error 404 not found when trying to download
I'm trying to download nokia pc suite to windows xp to upload gallery onto the computer but get error message404 not found - how can i download this pc suite please -- Krysy Albutt Krysy Albutt wrote: > I'm trying to download nokia pc suite to windows xp to upload gallery > onto the computer but get error message404 not found - how can i > download this pc suite please Care to enlighten us how this pertains to: - 1) Microsoft 2) Publisher 3) Windows If you're having problems downloading from the *NOKIA* site where do you think you should be directing your ...

Q: How to automatically adapt column width with XML format?
Hi. I'm developing an application that outputs its results to an XML file (with Excel XP's DTD). The trouble is the column width, which is set at default. Is there an XML tag which allow to adapt width automatically? I thought about a VBA macro, but I noticed that VBA code isn't stored in XML Excel's files. Thanks in advance, Francesco. ...

How to get Calendar to send me reminders
I have changed my e-mail address but for some reason I cannot get Calendar to send reminders to my new address - I think I have carried out all that is necessary to effect the changover but I am not getting reminders sent. Can anyone help please? Is the Calendar Live ID based and accessible at Calendar.live.com ? -- ....winston ms-mvp mail "Dabardevon" wrote in message = news:FDC2B3B2-EDE4-41B1-BFC4-C0F9ED59CFB9@microsoft.com... I have changed my e-mail address but for some reason I cannot get = Calendar to send reminders to my new address - I think I have...

Some recipients get the attachment, some get winmail.dat
This one has me baffled. We are using Exchange 2000 and Outlook 2000 and have been for 8 months. No previous problems with attachments (.doc, .xls, .jpg). About 2 weeks ago, we started hearing from certain recipients that the attachment wasn't arriving; instead they were getting an unreadable file called winmail.dat. MS says that this is because the sender is using Rich Text to format the email. We have changed the senders to use Plain Text and still have the same problem. If the email is sent to several recipients, some will get the attachment fine, some will not. This didn'...

How to get the CScrollBar's Handle in CTreeCtrl?
Hey,All: I thought I have a problem when I trid to get the CScrollBar's handle from my CTreeCtrl extended handle. Can anybody tell me whether I can get the handle of the CScrollBar from the CTreeCtrl? Thanks in advance! Carl :-| Carl wrote: > Hey,All: > > I thought I have a problem when I trid to get the CScrollBar's handle from > my CTreeCtrl extended handle. > Can anybody tell me whether I can get the handle of the CScrollBar from the > CTreeCtrl? > > Thanks in advance! > Carl > :-| > > Sorry, it is not that simple. The scroll bars that...

A Crystal Beginner
I am using Crystal 9.2.4.77 and have loaded the Crystal enhancements. Now I want to do against the CRM database. What do I do? I thought I would create a data source to the CRM SQLserver, which I did, then connect to it through Crystal Reports. That works, but when I drill down on the AAA_MSCRM database to choose my tables, it shows me dbo as the only option (where did this come from??) and under that are just a few generic tables. No CRM tables. Something's not quite right. What am I missing? file - log on to aps server "KBLawson" <klawson@aetinc.com> wrote in ...

Cannot get fast forward or fast reverse to work with WMP 11
I am running Vista Home Premium on a HP G 217-EM Notebook which comes pre-installed with Windows Media Player 11. When I play cds and try to fast forward or fast reverse by keeping the fast forward or fast reverse buttons constantly depressed nothing happens. Why is this, and can anyone come up with a solution? Many thanks This doesn't work on my system either, so it's probably just a limitation of WMP. Fast forward and fast reverse should work fine when you rip the CD's to MP3 or WMA files, and play these files instead. Regards -- Tim De Baets http://www....

Windows 2008 and long paths
Hi! The Vista shell has some support for paths longer than MAX_PATH (260 chars): http://blogs.msdn.com/michkap/archive/2006/12/13/1275292.aspx Does the 2008 shell have the same (or better) support? Kind regards, Thomas ...

My windows giveth xml and it taketh away! Include path!
I wrote a screensaver, via Visual Studio 2003 in C# and I decided a wiser choice for me was to use an xml file to save my configs. Btw: I wonder if this is why every bit of documentation I've found for saving configuration info in an xml file speak of only doing this for web programming in fact, I get the impression that they have been slipped a mickey that made them forget that there are programs out there that are not web based, but I digress ... I could have done a regular config files be just a regular text file, but I figured, I might as well do it with xml like everyone else ...

Get paid while you get online!!
I found a great Internet company - Cashfiesta.com - that has created a product everyone can benefit from. They pay you while you work or play on your computer. All you need to do is keep their software - the FiestaBar=99 - active while you are online. They even pay you when your friends are using their computers. Unlike other companies, Cashfiesta gives you control over how much money you earn. They have an individual payrate based on the number of Special Offers you sign up for. As some of these offers are free, you can increase your payrate up to 33 times without spending a penny. It's...

help reading xml doc
I'm new to XML, so please bear with me. I'm using XPathNavigator and XPathNodeIterator to return a set of xml nodes from a document that looks like this: <root> <book title="Some Title"> <chapter> <title>Chapter 1</title> <starting_page>34</starting_page> <number_of_pages>15</number_of_pages> </chapter> <chapter> <title>Chapter 2</title> <starting_page>50</starting_page> <number_of_pages>15</number_of_pa...

Spreadsheet getting corrupted
Hello All: I have a relatively large spreadsheet. I am getting errors (see after my signature line). What could be causing these errors? Is it that the spreadsheet is too large? Thanks Deguza -------------------------------------------------------- Microsoft Office Excel File Repair Log Errors were detected in file 'C:\Documents and Settings\deguza\My Documents\sales\Sales_2006_2007.xls' The following is a list of repairs: Global PivotTable report information was repaired due to integrity problems. Global PivotTable report information was repaired due to integrity problems. Glo...

Can't get auto-update (update) to install
Version: 2008 Operating System: Mac OS X 10.4 (Tiger) Processor: Power PC I've been trying to manually check for updates to Word 2008, and I get a &quot;critical update&quot; notice, asking me to install auto-update. When I try to install it, I cannot. It just keeps repeating the attempt, in an &quot;endless loop.&quot; What to do? <br> Thank you. ...

xml schemalocation
I'm trying to generate a schemalocation entry on my root node when using the xmlserializer.serialize method. I have been unable to achieve this. Is there a certain attribute I need to be applying to my root node class for that to appear? Any help is appreciated. Lance Johnson How about: public class Test { [XmlAttribute("schemalocation")] public string Location; } "Lance Johnson" <ljohnson@docs.com> wrote in message news:ud$OUCzsFHA.2076@TK2MSFTNGP14.phx.gbl... > I'm trying to generate a schemalocation entry on my root node when using the &...

Reg getting the next IV Document Number field !
Hi, I am creating a window in dexterity similar to the item transaction entry window (Transactions>Inventory> Transaction Entry). In the Item transaction Entry window, the Document number field defaults to the next document number when we move the focus to that field. I wanted to know if there is any function , or table that i can access to get the next document number in the new window that i am creating. Thanks, swetha -- swetha >In the Item transaction Entry window, the Document number field defaults to the next document number when we move the focus to that field.< T...

How do I get??
Sorry if this seems a fairly easy question to you guys. I have a spreadsheet and I need to get the current system time into a cell. The format of the time is hh:mm am/pm. Any assistance would be most helpful. Hi try =INT(NOW()) in this cell and format is to your needs -- Regards Frank Kabel Frankfurt, Germany PM wrote: > Sorry if this seems a fairly easy question to you guys. > > I have a spreadsheet and I need to get the current system time into a > cell. The format of the time is hh:mm am/pm. > > Any assistance would be most helpful. PM, in the cell you want pu...

Get notified when Out of Office is on
I am using Outlook 2007. With 2003, when returning from leave, I used to get a notification that the Outlook out of office was still on and asking me if I wanted to switch it off. This reminder no longer appears with 2007. How can I switch this setting on so that I get the notification? "Mary Ann" <MaryAnn@discussions.microsoft.com> wrote in message news:ED5533A7-D0EA-41B8-B1A0-A9D15FB6FD98@microsoft.com... >I am using Outlook 2007. With 2003, when returning from leave, I used to get > a notification that the Outlook out of office was still on and asking me ...

Getting Control ID in Active X control
GetWindowLong return 0. You need to call GetDlgCtrlID from outside the activex control as the function available within the control returns an arbitrary value of zero. Take a look at this article http://xendra.ens.uabc.mx/~sinfante/loo/libro/ch17_4.htm particularly the paragraph preceeding the title "MFC and Ambient Properties". This really begs the question why you want the ID in the first place as activex controls have to be fully self containing to operate - with a few exceptions where sibling controls need to be able to locate each other. - Tim "ytv" <...

over VPN, it gets stuck when sending outgoing email
When I use VPN to connect to work from home, the outlook can not finish sending outgoing emails. The progress bar moves to the end but then stops there forever. It can never finish. The receiving of new incoming emails work fine. All other network functionality works, e.g. internet browsing, telnet, ftp, etc, all work fine. My system is win2k. I use linksys wireless DSL router. I'd appreciate any hint! Are you using Exchange server? I'd set up your mail profile to prompt you to work offline or online - when using VPN, work offline with scheduled syncs. If not using exchange, pos...

Get photos from a camera
I have an asp.net intranet application that I need to upload 1 or all photos from a digital camera at a PC workstation. We are using DataGrids and GridViews to display them on the web once they are uploaded but need something at the client. I assume I need some sort of ActiveX process or something. Has anyone run into a solution for this need? Thanks. -- David "DavidC" <dlchase@lifetimeinc.com> wrote in message news:2B061F4F-B548-4AA4-96FA-2F87383192D2@microsoft.com... > I have an asp.net intranet application that I need to upload 1 or all > photos ...

XML discount print issue
Hi all, I have a issue with printing discounts on receipts. First of all, I did a lot of RMS XML programming for customers, so I think I know what i'm talking about. But I cannot figure out the following: The price and extended price printed on receipts are the actual prices customers have to pay. Now I have one customer who wanted to always print the full price on each line, without the discounts instead of the discounted price. That can easily be done by changing the Entry.Price to Entry.FullPrice. So far so good. But, now they want also the following. If they change a price at...

how to get the format of this cell right?
When I let go: Selection.Replace " ", Replacement:="-", Lookat:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False " " is entered by means of an array: Words = Array(" ", "+", "/", "---", "--", "&") on a cell containing: 5 a I would expect to get: 5-a as a result. Unfortunately, it produces 5:00:00-AM. How can I solve this tiny but frustrating problem? best regards Pet...

how to get the pointer variable address from a dll
hi all, I have a DLL which has a output parameter LPVOID, A application calls this DLL function, the Dll responsibility is to assign a valid pointer to the lpBuffer, Till here it is OK, but once it returns to the Application this lpBuffer becomes NULL. Prototype, __declspec(dllexport) BOOL TRSTMonGetStatus(LPVOID lpBuffer) Please let me know what to do, I am stuck in this. try this __declspec(dllexport) BOOL TRSTMonGetStatus(LPVOID &lpBuffer) AliR. <karunyalakshmi@gmail.com> wrote in message news:1182179607.989434.318540@x35g2000prf.googlegroups.com... > > hi a...

How do I get my best friend back?
I NEED TO KNOW "monsterboy16" <monsterboy16@discussions.microsoft.com> wrote in message news:7918DF09-EB34-46E4-852E-8DAAC3FFF45F@microsoft.com... > I NEED TO KNOW Easy. Just lift the lid on your toilet seat and whistle. Dipshit! -- "Don't pick a fight with an old man. If he is too old to fight, he'll just kill you." Pretend that you're in a coma and unable to communicate in any way (such as posting messages in newsgroups). "monsterboy16" <monsterboy16@discussions.microsoft.com> wrote in message news...