2012-10-04 40 views
1

我怎樣才能做一個foreach在那裏我可以閱讀只是XML標籤Equipe哪裏有<DesFilialnet>等於Rest我怎麼能讀一個完整的XML節點時的特定一個具有特定值

這是一個例子:

<Equipe> 
    <CPFUsuario>5546</CPFUsuario> 
    <CodUsuario>6536</CodUsuario> 
    <ApelidoUsuario>PARREIRA.MG</ApelidoUsuario> 
    <NomeCompletoUsuario>JORGE</NomeCompletoUsuario> 
    <CodAgenciaLopesnet>15513</CodAgenciaLopesnet> 
    <DesAgenciaLopesnet>MINAS GERAIS LTDA.</DesAgenciaLopesnet> 
    <DesFilialnet>Rest</DesFilialLopesnet> 
    <CodEquipe>584309</CodEquipe> 
    <CodEquipeNovo>597951</CodEquipeNovo> 
    <DesEquipe>CARLOSMG</DesEquipe> 
    <CodEquipeSecundaria /> 
    <CodEquipeSecundariaNovo /> 
    <DesEquipeSecundaria /> 
    <CodFilialSiebelPronto></CodFilialSiebelPronto> 
    <GrupoAcesso>1</GrupoAcesso> 
</Equipe> 

我有很多Equipe標籤,但<DesFilialnet>變化,我只想要<Equipe>其中<DesFilialnet>是休息。

按照我如何做

public void leXmlCors(string file) 
    { 
     XmlReader rdr = XmlReader.Create(file); 
     XDocument doc2 = XDocument.Load(rdr); 

     foreach (var equipes in doc2.Root.Descendants("Equipe")) 
     { 
      foreach (var element in equipes.Descendants()) 
      { 
       // This will read all <Equipe> tag, but I don't want all <Equipe> tag 
      } 
     } 
    } 
} 

回答

2

給那麼XML:

<Test> 
    <Equipe> 
     <CPFUsuario>5546</CPFUsuario> 
     <CodUsuario>6536</CodUsuario> 
     <ApelidoUsuario>PARREIRA.MG</ApelidoUsuario> 
     <NomeCompletoUsuario>JORGE</NomeCompletoUsuario> 
     <CodAgenciaLopesnet>15513</CodAgenciaLopesnet> 
     <DesAgenciaLopesnet>MINAS GERAIS LTDA.</DesAgenciaLopesnet> 
     <DesFilialnet>Rest</DesFilialnet> 
     <CodEquipe>584309</CodEquipe> 
     <CodEquipeNovo>597951</CodEquipeNovo> 
     <DesEquipe>CARLOSMG</DesEquipe> 
     <CodEquipeSecundaria /> 
     <CodEquipeSecundariaNovo /> 
     <DesEquipeSecundaria /> 
     <CodFilialSiebelPronto></CodFilialSiebelPronto> 
     <GrupoAcesso>1</GrupoAcesso> 
    </Equipe> 
    <Equipe> 
     <CPFUsuario>5546</CPFUsuario> 
     <CodUsuario>6536</CodUsuario> 
     <ApelidoUsuario>PARREIRA.MG</ApelidoUsuario> 
     <NomeCompletoUsuario>JORGE</NomeCompletoUsuario> 
     <CodAgenciaLopesnet>15513</CodAgenciaLopesnet> 
     <DesAgenciaLopesnet>MINAS GERAIS LTDA.</DesAgenciaLopesnet> 
     <DesFilialnet>not rest</DesFilialnet> 
     <CodEquipe>584309</CodEquipe> 
     <CodEquipeNovo>597951</CodEquipeNovo> 
     <DesEquipe>CARLOSMG</DesEquipe> 
     <CodEquipeSecundaria /> 
     <CodEquipeSecundariaNovo /> 
     <DesEquipeSecundaria /> 
     <CodFilialSiebelPronto></CodFilialSiebelPronto> 
     <GrupoAcesso>1</GrupoAcesso> 
    </Equipe> 
</Test> 

下面應該工作:

var equipes = XDocument.Parse(xml) 
         .Elements("Test") 
         .Elements("Equipe") 
         .Where(e => e.Element("DesFilialnet") 
         .Value.ToUpperInvariant() == "Rest".ToUpperInvariant()); 

現在你可以做你foreach環上所產生的IEnumerable<XElement>

foreach (var xElement in equipes) 
     { 
      //Do something 
     } 

當然這需要LINQ和以下using聲明:

using System.Xml.Linq; 
using System.Linq; 
相關問題