Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从单节点xml获取值_Xml_Xpath_Selectsinglenode - Fatal编程技术网

从单节点xml获取值

从单节点xml获取值,xml,xpath,selectsinglenode,Xml,Xpath,Selectsinglenode,我的数据xml如下所示: <ListeNoeuds> <Noeud> <Cle>Commande</Cle> <Attributs> <Noeud> <Cle>nbrActionTraitees</Cle> <Valeur>25</Valeur> </Noeu

我的数据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>
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();
 XmlNode FindSujet = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']");
            string Sujetmail =  FindSujet.NextSibling.InnerText;
获取cle的值。这是工作

但当我修改以获得valeur的值时,如下所示:

 <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>
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();
 XmlNode FindSujet = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']");
            string Sujetmail =  FindSujet.NextSibling.InnerText;
我得到零

我也试过这样做:

 <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>
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();
 XmlNode FindSujet = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']");
            string Sujetmail =  FindSujet.NextSibling.InnerText;
获取空值。请帮助我。

正确的XPath是

/ListeNoeuds/Noeud/Attributs/Noeud[Cle/text()='SujetEmail']/Valeur
正确的XPath是

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

感谢您的回复…我发现我的解决方案如下:

 <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>
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();
 XmlNode FindSujet = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']");
            string Sujetmail =  FindSujet.NextSibling.InnerText;

感谢您的回复…我发现我的解决方案如下:

 <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>
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();
 XmlNode FindSujet = paramsXml.SelectSingleNode("/ListeNoeuds/Noeud/Attributs/Noeud/Cle[text()='SujetEmail']");
            string Sujetmail =  FindSujet.NextSibling.InnerText;
试试这个:

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

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