2010-11-29 7 views
0

Existe-t-il une sorte de syntaxe xpath que je pourrais utiliser pour obtenir tous les nœuds (y compris les nœuds enfants) qui ont un identifierref présent dans le xml ci-dessous? J'ai essayé quelque chose comme XmlNodeList nodeList = xmlDoc.SelectNodes("//@identifierref"); mais cela ne retourne pas le nœud du titre enfant en dessous des nœuds de l'élément. Idéalement, je veux obtenir une liste de nœuds qui a accès aux nœuds d'éléments qui ont un identifieur présent et les nœuds de titre en dessous. Voici le xml avec lequel je travaille. Merci d'avance.Tous les nœuds ayant un attribut

<organization xmlns:adlcp="test1" xmlns="test2"> 
     <title>1.2 Tester</title> 
     <item identifier="C2_LESSON1"> 
     <title>TestName1</title> 
     <item identifier="I_SCO1" identifierref="SCO01"> 
      <title>Tester SCO 1</title> 
     </item> 
     </item> 
     <item identifier="C2_LESSON2"> 
     <title>TestName2</title> 
     <item identifier="I_SCO2" identifierref="SCO01"> 
      <title>Tester SCO 2</title> 
     </item> 
     </item> 
     <item identifier="C2_LESSON3"> 
     <title>TestName3</title> 
     <item identifier="I_SCO3" identifierref="SCO01"> 
      <title>Tester SCO 3</title> 
     </item> 
     </item> 
    </organization> 

Répondre

1

Je veux obtenir une liste de noeud qui a accès aux nœuds d'éléments qui ont identifierref présents et le titre nœuds ci-dessous les

//item[@identifier] 

Selects surtout item éléments dans le document ayant un attribut identifier. Si vous souhaitez également sélectionner l'élément title enfant. Mais l'ordre des résultats de l'ensemble de nœuds dépend de la langue de l'hôte (le plus de travail avec l'ordre des documents). Il n'y a pas non plus de fonction de "regroupement": vous ne pouvez pas parcourir tous les deux, car il manque peut-être title.

, utilisez d'abord l'expression XPath d'abord, puis itérer sur les item obtenir le title avec une méthode DOM ou une expression XPath relative comme:

title 
+0

Une autre expression sans l'union de deux chemin absolu: '//* [(self :: item | auto :: titre/parent :: item) [@ identifiant]] 'mais ce n'est pas plus court et peut-être pas plus efficace. –

Questions connexes