1

我怎样才能做一个foreach我可以读取只有等于的XML标签的Equipe地方<DesFilialnet>Rest

这是一个例子:

<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
            }
        }
    }
}
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 回答