2010-05-25 4 views
0

J'essaie de vérifier dans mon fichier XML si HeaderReportUnit existe, comment je peux vérifier si cet en-tête existe? J'utilise 2.0 assemblage, vraiment merci pour l'aidecomment je peux vérifier si cet en-tête existe?

<?xml version="1.0" encoding="UTF-8" ?> 
- <HeadReportUnit> 
- <Title> 
    <ModuleNum>ModuleNum</ModuleNum> 
    <hdstSetPos>hdstSetPos</hdstSetPos> 
    <hdstNzlName>hdstNzlName</hdstNzlName> 
    <nzavSpecName>nzavSpecName</nzavSpecName> 
    <nzavNzlDiameter>nzavNzlDiameter</nzavNzlDiameter> 
    <nzavNzlSizeX>nzavNzlSizeX</nzavNzlSizeX> 
    <nzavNzlSizeY>nzavNzlSizeY</nzavNzlSizeY> 
    <nzavNzlType2>nzavNzlType2</nzavNzlType2> 
    </Title> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 1</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 2</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 3</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 4</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 5</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 6</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 7</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 8</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 9</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</nzavNzlSizeX> 
    <nzavNzlSizeY>0.6</nzavNzlSizeY> 
    <nzavNzlType2>Standard</nzavNzlType2> 
    </Unit> 
- <Unit> 
    <ModuleNum>1</ModuleNum> 
    <hdstSetPos>1- 10</hdstSetPos> 
    <hdstNzlName>R07-007-070</hdstNzlName> 
    <nzavSpecName>AA05700</nzavSpecName> 
    <nzavNzlDiameter>0.0</nzavNzlDiameter> 
    <nzavNzlSizeX>0.7</ 

nzavNzlSizeX

+2

Votre question est pas claire. Plutôt que de demander "comment puis-je savoir si cet en-tête existe?" (puisque le concept d'un "en-tête" n'existe pas en XML), reformulez votre question et demandez ce que vous voulez savoir * sur le XML *. Par exemple, quelque chose comme "comment puis-je savoir s'il y a une balise dans la balise' HeaderReportUnit/Title' qui a la valeur de "" nzavNziSizeX "' ", si c'est ce que vous demandez. –

+0

Vouliez-vous dire "Comment savoir si un noeud existe dans un fichier XML?" (dans votre cas, le nœud 'HeaderReportUnit') – Dror

Répondre

3

Vous pouvez sélectionner le nœud avec un XPathNavigator et voir s'il y a un résultat.

Par exemple:

FileStream stream = new FileStream("c:\\file.xml", FileMode.Open); 
XPathDocument document = new XPathDocument(stream); 
XPathNavigator navigator = document.CreateNavigator(); 
XPathNodeIterator node = navigator.Select("/HeadReportUnit"); 
if (node.Count > 0) 
{ 
    // do stuff 
} 
+0

Il n'a pas fonctionné, je reçois null si elle existe tag –

+0

Vous avez raison. Je n'ai pas testé mon code correctement. La méthode Select de XPathNavigator renvoie un itérateur. Nous devons donc utiliser la propriété Count pour voir s'il existe des résultats. – basvo

Questions connexes