Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

XPath problem: neke "putanje" rade, neke ne

[es] :: .NET :: XPath problem: neke "putanje" rade, neke ne

[ Pregleda: 2786 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon XPath problem: neke "putanje" rade, neke ne22.05.2007. u 01:09 - pre 174 meseci
Imam XML fajl:
Code:

<group>
  <name>BaseGroup</name>
  <vpnname>
  </vpnname>
  <username>
  </username>
  <password>
  </password>
  <path>Remoted</path>
  <groups>
    <group>
      <name>group1</name>
      <vpnname>
      </vpnname>
      <username>
      </username>
      <password>
      </password>
      <path>Remoted\group1</path>
      <groups>
        <group>
          <name>group1-1</name>
          <vpnname>
          </vpnname>
          <username>
          </username>
          <password>
          </password>
          <path>Remoted\group1\group1-1</path>
        </group>
      </groups>
      <servers>
        <server>
          <name>server1-1</name>
          <hostname>serverbla</hostname>
        </server>
      </servers>
    </group>
    <group>
      <name>group2</name>
      <vpnname>
      </vpnname>
      <username>
      </username>
      <password>
      </password>
      <path>Remoted\server2</path>
    </group>
  </groups>
</group>


Me.Name = data.SelectNodes("/group/name")(0).InnerText radi normalno, tj. nalazi "BaseGroup"
Dim GroupNodes As XmlNodeList = data.SelectNodes("/group/gourps/group") vraca praznu listu.

Da li nesto previdjam ili... ?

[Ovu poruku je menjao Shadowed dana 22.05.2007. u 02:38 GMT+1]
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.yubc.net.



+3 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 08:15 - pre 174 meseci
Mozda zato sto ti u tag pise gROUps a ti ga trazis sa gOURps
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 12:17 - pre 174 meseci
Znaci, ne verujem... 10 puta sam gledao da nisam pogresno napisao...
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 15:34 - pre 174 meseci
Hm, sad imam nov problem...
Code:

Public Sub RestoreFromXML(ByVal data As XmlNode)
    With data
...
    Dim GroupNodes As XmlNodeList = .SelectNodes("/group/groups/group")
        If GroupNodes.Count > 0 Then
            For Each GroupNode As XmlNode In GroupNodes
                Dim tmpGroup As New Group
                tmpGroup.RestoreFromXML(GroupNode)
                Me.ChildGroups.Add(tmpGroup)
            Next
        End If
    End With
End Sub

Ovo je rekurzivna funkcija koja bi trebala da kreira stablo grupa i servera (ovo za servere sam izbacio, ovde je nebitno). Nalazi se kao metod u klasi Group.
Problem je u tome sto uvek dobijam istu GroupNodes listu i samim tim se rekurzija izvrsava sve dok ne prepuni stack.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 17:00 - pre 174 meseci
Malo dodatnih podataka.
Stavio sam brakepoint i prilikom prvog prolaska GroupNode ima XML koji i treba:
Code:

<group>
      <name>group1</name>
      <vpnname>
      </vpnname>
      <username>
      </username>
      <password>
      </password>
      <path>Remoted\group1</path>
      <groups>
        <group>
          <name>group1-1</name>
          <vpnname>
          </vpnname>
          <username>
          </username>
          <password>
          </password>
          <path>Remoted\group1\group1-1</path>
        </group>
      </groups>
      <servers>
        <server>
          <name>server1-1</name>
          <hostname>serverbla</hostname>
        </server>
      </servers>
    </group>


Medjutim, kada se ponovo pozove funkcija sa ovim Node-om, prilikom selekcije sa "/group/groups/group" umesto da dobijem jedan node koji imas xml:
Code:
<group>
          <name>group1-1</name>
          <vpnname>
          </vpnname>
          <username>
          </username>
          <password>
          </password>
          <path>Remoted\group1\group1-1</path>
        </group>

ja dobijem listu od dva node-a od kojih prvi ima isti onaj gore xml.
Najcudnije mi je sto u provom prolazu radi, u drugom ne.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6021



+4620 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 18:32 - pre 174 meseci
Xpath ti pocinje sa / sto vuce na root. XPath se uvek primenjuje na trenutni node u okviru celog stabla, narodski iako trazis XPath nad nodom, sam path je u "apsolutnom" modu i uvek vraca isto... Probaj sa relativnom XPath putanjom "groups/group" u rekurziji..


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 19:52 - pre 174 meseci
Ako stavim "groups/group" ne dobijam ni jedan, sto mi je i logicno, jer root element je group pa mora krenuti od njega. Ako stavim "group/groups/group", znaci isto kao na pocetku samo kao relativno putanju, u prvom krugu dobijem dva node-a, kao i sa apsolutnom putanjom, dok u drugom kada se prosledi samo unutrasnji deo (xml za podgrupu), ne vrati ni jedan (iako postoji ova "group1-1" grupa.
Sve ovo mi izgleda totalno uvrnuto. A i mislim da ne bi trebalo da bude razlike izmedju apsolutne i relativne putanje ovde jer prilikom novog poziva funkcije, dobija se samo unutrasnji deo xml-a i kada se on gleda, apsolutna putanja je taman kako treba.

Inace, ako iko ima ideju kako ovo da se uradi na drugi nacin, dobrodoslo je. Bitno mi je jedino da bude obican fajl a ne baza i pozeljno je da je xml.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6021



+4620 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 20:31 - pre 174 meseci
Ok, onda izvuci /group node i pozovi rekurziju nad njim specificirajuci /groups/group kao xpath u rekurziji...

XmlDocument nije jednako <group> nodu, vec je korak iznad njega.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne22.05.2007. u 21:26 - pre 174 meseci
Sa "/groups/group/" je GroupNodes.Count = 0 :/
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12793



+4735 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne23.05.2007. u 10:31 - pre 174 meseci
Odustadoh od ovog nacina. Probao sam XMLSerializer i radi sasvim zadovoljavajuce, cak daje godovo isti XML kao ovaj koji sam ja koristio. Ostale podatke cu staviti u drugi fajl iako sam se nadao da imam samo jedan config fajl.
Bar sam naucio jednu stvar - da je XPath ipak komplikovaniji nego sto izgleda :)

Hvala, spartak i mmix.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6021



+4620 Profil

icon Re: XPath problem: neke "putanje" rade, neke ne23.05.2007. u 15:12 - pre 174 meseci
Ok, nesto se mi nismo bili razumeli, sad sam proverio i definitivno je u pitanju absolue vs relative path (prepevah tvoj sample u C#):

Code:

    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("data.xml");

            Group g = new Group();
            g.RestoreFromXML(doc.DocumentElement);

        }
    }

    public class Group
    {
        Collection<Group> ChildGroups = new Collection<Group>();
        public void RestoreFromXML(XmlNode data)
        {
            XmlNodeList GroupNodes = data.SelectNodes("groups/group");

            if (GroupNodes.Count > 0)
                foreach (XmlNode GroupNode in GroupNodes)
                {
                    Group tmpGroup = new Group();
                    tmpGroup.RestoreFromXML(GroupNode);
                    this.ChildGroups.Add(tmpGroup);
                }
        }

    }


i ovo radi sasvim ok, sto se vidi iz prilozene slike



I ja bih ti licno predlozio da koristis XML serijalizaciju za ove stvari (i to te ne spracava stvais sta god hoces u jedan config file), ali XPath definitivno jeste jednostavan
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
Prikačeni fajlovi
 
Odgovor na temu

[es] :: .NET :: XPath problem: neke "putanje" rade, neke ne

[ Pregleda: 2786 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.