Výběr uzlu v XML příkazem SelectSingleNode   otázka

VB.NET, Visual Studio, XML

Dobrý den, prosím o radu.

Mám program ve Visual Basicu, ve kterém potřebuji vybrat v XML souboru konkrétní uzel grp.

Používal jsem tento příkaz:

node = xmlTargetDocument.SelectSingleNode("opentag/file/grp[@id="1"]")

Jenže se změnil zdrojový formát a XML soubor má trochu jinou strukturu, se kterou to už nefunguje, protože se tam vyskytuje víc uzlů file, takže tam může být víc uzlů grp se stejným ID. To dřív nebylo, uzel file tam byl vždy jen jeden, takže i všechny uzly grp byly jedinečné. Jednotlivé uzly file jsou nyní identifikovány tagem <job type="jobid">1</job>. Jen nevím, jak to narvat do toho příkazu uvedeného výše. Předem děkuji za pomoc.

XML zdroj teď vypadá nějak takto:

<opentag>
   <file>
	<job type="jobid">1</job>
	<grp id="1">
		<!--some tags-->
	</grp>
	<grp id="2">
		<!--some tags-->
	</grp>
   </file>
   <file>
	<job type="jobid">2</job>
	<grp id="1"">
		<!--some tags-->
	</grp>
	<grp id="2">
		<!--some tags-->
	</grp>
   </file>
</opentag>
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Neumím moc XPATH a asi to půjde nějak líp ale možná hledáte něco v tomhle smyslu

/opentag/file[position()>= 0]/grp[position() >= 0][@id="1"]
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevím co myslíte tím position(), ale každopádně jsem mezitím přišel na řešení.

Teď to vypadá (a funguje) takto:

node = xmlTargetDocument.SelectSingleNode("opentag/file[job[@type="1"]]/grp[@id="1"]")
nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback