1

How can I do a foreach where I can read just the XML tag Equipe where has the <DesFilialnet> equals Rest

This is an example:

<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>

I have a lot of Equipe tag, but the <DesFilialnet> change, and I want just the <Equipe> where <DesFilialnet> is Rest.

Follow how I'm doing

    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
            }
        }
    }
}
4

1 に答える 1

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;
于 2012-10-04T18:13:14.993 に答える