从单个节点xml获取值

时间:2017-07-27 12:21:05

标签: xml xpath selectsinglenode

我有这样的数据xml:

 <ListeNoeuds>
    <Noeud>
       <Cle>Commande</Cle>
         <Attributs>
        <Noeud>
          <Cle>nbrActionTraitees</Cle>
          <Valeur>25</Valeur>
        </Noeud> 
       <Noeud>
            <Cle>nbrErreurs</Cle>
            <Valeur>32</Valeur>
        </Noeud>
         <Noeud>
             <Cle>SujetEmail</Cle>
             <Valeur>Compte rendu du défichage Préventel XXXXXXXX</Valeur>                   </Noeud>
       </Attributs>
         <SousNoeuds>
            <Noeud>

.....

我只想提取值,其中cle = SujetEmail。 这意味着我想得到这个价值:Compte rendududéfichagePréventelXXXXXXXX

我试过了:

string Sujetmail = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']).InnerText;

获取cle的值。这是工作。

但是当我修改以获得像这样的valeur的值时:

string Sujetmail = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']/following-sibling").InnerText;

我得到了

我也试过这样:

string Sujetmail = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']/following-sibling::string[1]").ToString();

得到null ..请帮帮我。

3 个答案:

答案 0 :(得分:1)

正确的XPath是

/ListeNoeuds/Noeud/Attributs/Noeud[Cle/text()='SujetEmail']/Valeur

答案 1 :(得分:1)

试试这个:

paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud[Cle[text()='SujetEmail']]/Valeur").InnerText;

答案 2 :(得分:0)

感谢您的回复......我找到了这样的解决方案:

 XmlNode FindSujet = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']");
            string Sujetmail =  FindSujet.NextSibling.InnerText;