salut tout le monde je fais le programme suivant dans lequel je veux récupérer le xpath d'une valeur d'un noeud.
par exemple:
salut
le xpath de salut est : /html/body/p
****************************************
voici mon programme c'est une application console:
using System;
using System.Xml;
using System.Xml.XPath;
using System.Collections;
namespace ParserXML
{
///
/// Description résumée de Class1.
///
class Class1
{
///
/// Point d'entrée principal de l'application.
///
///
private static int k= 0;
private static string path="";//le xpath
private static int prof=0;//le profodeur d'une donner dans l'arbre xml
private static ArrayList tab=new ArrayList();//une liste de Xpath
private static void processXmlFile2()
{
XmlDocument xmlDoc;
try
{
xmlDoc = new XmlDocument();
xmlDoc.Load("google.xml");
XPathNavigator xpathNavigator;
xpathNavigator=xmlDoc.CreateNavigator();
xpathNavigator.MoveToRoot();
GetXmlNodes(xpathNavigator);
}
catch (Exception ex)
{
Console.WriteLine (ex.Message);
}
}
public static void GetXmlNodes (XPathNavigator nav)
{
string str="";
switch (nav.NodeType)
{
case XPathNodeType.Element:
if (nav.Prefix==String.Empty)
{
Console.WriteLine("", nav.LocalName);
path+="/"+nav.LocalName;
prof++;
}
else
Console.Write("", nav.Prefix, nav.LocalName);
Console.WriteLine("\t"+ nav.NamespaceURI);
break;
case XPathNodeType.Text:
Console.WriteLine("\t" + nav.Value);
Console.WriteLine("the path is:"+path);
str=nav.Value+"*"+path;
tab.Add(str+"*"+prof);
break;
}
if (nav.MoveToFirstChild())
{
do
{
GetXmlNodes(nav);
} while ( nav.MoveToNext() );
if(path.Length >0)
{
path=path.Substring(0,path.LastIndexOf("/"));
prof--;
}
nav.MoveToParent();
if (nav.NodeType == XPathNodeType.Element)
Console.WriteLine("", nav.Name);
}
}
private static ArrayList Rechercher(string str)
{
ArrayList l=new ArrayList();
foreach(string m in tab)
{
if(m.StartsWith(str))
{
l.Add(m);
}
}
return l;
}
public static void Main(string[] args)
{
//processXmlFile();
processXmlFile2();
ArrayList s=new ArrayList();
s=Rechercher("wanadoo");
Console.WriteLine("***************");
foreach(string m in s)
{
Console.WriteLine(m);
}
}
}
}
voici mon fichier xml en entrée dont le nom est google.xml
*****************************************
*******************
je sais que c'est trés long mais bon merci pour votre aide.
je veux une solution, la mienne n'a pas encore marché.
cordialement Ahmed.
A voir également:
Récupérer le xpath d'une valeur donner dans un document xml