Avatar billede flvind Nybegynder
18. april 2006 - 14:05 Der er 6 kommentarer og
2 løsninger

søgning i xpath løkkke

Hej jeg har et program som benytter xpath til at finde informationer fra en xml fil, men problemet er at hvert element der findes består af en mængde forskellige informationer og derfor vil jeg gerne søge efter bestemte information i xpath løkken.

Kan dette lade sig gøre?
Avatar billede rasserw Nybegynder
20. april 2006 - 12:29 #1
Hej,

XmlDocument doc = new XmlDocument();
XmlElement root = doc.DocumentElement;
XmlNodeList xnl = root.SelectNodes(xpathExpr);

// her kan vi jo så loope i de fundne elementer/noder
for (int i = 0; i < xnl.Count; i++)
{
    // bla bla
        // if(xnl[i].InnerText == "blib")....
}

Ved ikke om det kunne give lidt inspiration.

Venligst
Arne Johansen
www.frameworker.net
Avatar billede flvind Nybegynder
21. april 2006 - 13:19 #2
Hej undskyld at jeg ikke har svaret endnu, men har ikke lige haft tiden til at teste funktionen
Avatar billede flvind Nybegynder
25. april 2006 - 09:22 #3
Hej på nuværende tidpunkt ser min funktion således ud

---kode---
private void btnOver_Click(object sender, System.EventArgs e)
{
    XPathDocument Doc = new XPathDocument("c:\\xml\\ribe.xml");
        XPathNavigator navigator = Doc.CreateNavigator();
        XPathNodeIterator iterator = navigator.Select("/Content/Product/productArea[textDK='Overnatning']");
        while (iterator.MoveNext())
        {
        iterator.Current.MoveToParent();
        iterator.Current.MoveToFirstChild();
        Console.WriteLine(iterator.Current.Name);
        Console.WriteLine(iterator.Current.Value);
        lsbTest.Items.Add(iterator.Current.Value);
        }
}
---kode---

jeg ønsker eksempelvis at søge efter en node placeret i under content/product/name/nameDK.

Kan I hjælpe med dette
Avatar billede etif Nybegynder
28. april 2006 - 11:04 #4
Du søger alle forekomster med textDK = Overnatning og looper dem igennem, hvad er det så du vil gøre med de noder. Current er selv en XPathNavigator, så du kan bruge den på samme måde som navigator uden for loopet:

XPathNodeIterator iterator2 = iterator.Current.Select("/whatever");
while iterator2....
Avatar billede flvind Nybegynder
29. april 2006 - 13:59 #5
nu kører det og jeg brugte følgende kode

---kode---
String søgType = "productType"

XPathNavigator nav = Doc.CreateNavigator();
XPathNodeIterator iterator = navigator.Select("/Content/Product/productArea[textDK='Overnatning']");
while (iterator.MoveNext())
{
  iterator.Current.MoveToParent();
  iterator.Current.MoveToFirstChild();
  iterator.Current.MoveToFirst();
  lsBoxUuid.Items.Add(iterator.Current.Value);

  string iteratTemp = iterator.Current.Name.ToString();
                                                       
 
  while (søgType != iteratTemp)
  {
      iterator.Current.MoveToNext();
      iteratTemp = iterator.Current.Name.ToString();
  }
---kode---

Det er egentligt meget simpelt men utroligt svært at komme på
Avatar billede flvind Nybegynder
29. april 2006 - 14:19 #6
kan du ikke sende et svar rasserw så kan vi dele pointene da du førte mig på rette spor
Avatar billede flvind Nybegynder
29. april 2006 - 14:19 #7
tak
Avatar billede rasserw Nybegynder
29. april 2006 - 14:49 #8
selvtak! :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester