Thanx, it works fine now.
:-)
Gismo.
Uzytkownik "Martin Honnen" <mahotrash@yahoo.de> napisal w wiadomosci
news:#T5Ir9JGEHA.1240@TK2MSFTNGP10.phx.gbl...[color=blue]
>
>
> Gismo wrote:
>[color=green]
> > Uzytkownik "Martin Honnen" <mahotrash@yahoo.de> napisal w wiadomosci
> > news:OqLc8L$FEHA.692@TK2MSFTNGP09.phx.gbl...
> >[color=darkred]
> >>
> >>Gismo wrote:
> >>
> >>
> >>>I have got file raport.rld which is an XML file generated by MS[/color]
> >
> > Reporting
> >[color=darkred]
> >>>Services.
> >>>
> >>>The problem is:
> >>>
> >>>in this file are tags from two different namespaces
> >>>
> >>>[/color]
> >
> >[/color][/color]
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2003/10/reportdefini[color=blue][color=green]
> >[color=darkred]
> >>>tion"
> >>>[/color]
> >
> >[/color][/color]
xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"[color=blue][color=green]
> >[color=darkred]
> >>>
> >>>
> >>> when I'm trying to use XPATH to get <teble> tag it doesn't work. (the
> >>>result is empty)
> >>>
> >>> I've removed All tegs like
> >>>
> >>><rd:TypeName>System.Int32</rd:TypeName>
> >>>
> >>>Now all is working fine but what to do when I have tags from two[/color]
> >
> > different
> >[color=darkred]
> >>>namespaces?
> >>
> >>You need to declare a prefix for every namespace and then use the prefix
> >>in your XPath expression. How you do that depends on the environment, if
> >>you use XPath inside of an XSLT stylesheet you can simply declare the
> >>prefixes with
> >> <xsl:stylesheet
> >>
> >>[/color]
> >
> >[/color][/color]
xmlns:rd="xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportd[color=blue][color=green]
> > esigner"
> >[color=darkred]
> >>and then use
> >> rd:TypeName
> >>in your XPath expression.
> >>
> >>If you are using an API like selectNodes/selectSingleNode then you need
> >>to call
> >> xmlDocument.setProperty("SelectionNamespaces",
> >>
> >>[/color]
> >
> >[/color][/color]
"xmlns:rd='http://schemas.microsoft.com/SQLServer/reporting/reportdesigner'"[color=blue][color=green]
> > )
> >[/color]
>[color=green]
> > There is no method like setProperty.[/color]
>
> Sorry, I thought you might be using MSXML but you use .NET, there indeed
> is no such method.
>
> With .NET you need an XmlNamespaceManager and declare the prefixes for
> your XPath expressions and then pass that manager to the SelectNodes[/color]
method.[color=blue]
> For instance with the example document being
>
> <?xml version="1.0" encoding="UTF-8"?>
> <gods xmlns="http://vatican.va/2004/gods">
> <god name="Kibo" />
> <god name="Jaffo" />
> <dv:devil xmlns:dv="http://vatican.va/2004/devils" name="Xibo" />
> </gods>
>
> the following successfully queries the document using XPath
>
> using System;
> using System.Xml;
>
> public class Test20040402 {
> public static void Main (string[] args) {
> XmlDocument xmlDocument = new XmlDocument();
> xmlDocument.Load(@"test20040402.xml");
> XmlNamespaceManager namespaceManager = new
> XmlNamespaceManager(xmlDocument.NameTable);
> namespaceManager.AddNamespace("gs", "http://vatican.va/2004/gods");
> namespaceManager.AddNamespace("dv", "http://vatican.va/2004/devils");
> XmlNodeList gods = xmlDocument.SelectNodes("/gs:gods/gs:god",
> namespaceManager);
> Console.WriteLine("Found {0} elements.", gods.Count);
> foreach (XmlNode node in gods) {
> Console.WriteLine(node.Name);
> }
> gods = xmlDocument.SelectNodes("/gs:gods/dv:devil",[/color]
namespaceManager);[color=blue]
> Console.WriteLine("Found {0} elements.", gods.Count);
> foreach (XmlNode node in gods) {
> Console.WriteLine(node.Name);
> }
> }
>
> }
> --
>
> Martin Honnen
>
http://JavaScript.FAQTs.com/
>[/color]