2017-08-08 55 views
0

我不不,如果这是有道理的。但我有一个非常大的XML文件。如果我想删除所有的孩子和父母,如果它的兄弟姐妹遇到和条件。C#Linq to XML,删除父母和孩子时,兄弟有数据

因此,每次我的节点<Periode> <gyldigTil>有数据,而且不是空的,从我的xml文件中删除其父母和孩子。每次节点都空着时,请保留父母孩子和兄弟姐妹。

这是我的LINQ的C#

string file = Server.MapPath("ResponseCvrXML/" + "24347214" + ".xml"); 

string empty = " "; 
XDocument xd = XDocument.Load(file); 
xd.Root.Element("hits").Elements("_source").ToList() 
    .ForEach(x => 
    { 
     var name = x.Descendants("periode").First(); 
     if (name.Element("gyldigTil").Value == empty) { 
     } 
     else 
     { 
      x.Remove(); 
     } 

    }); 


xd.Save(Server.MapPath("ResponseCvrXML/" + "24347214" + ".xml")); 

和我的XML文件

<Root> 
    <took>24</took> 
    <timed_out>false</timed_out> 
    <_shards> 
    <total>6</total> 
    <successful>6</successful> 
    <failed>0</failed> 
    </_shards> 
    <hits> 
    <total>1</total> 
    <max_score>17.372461</max_score> 
    <hits> 
     <_index>cvr-permanent-prod-20170205</_index> 
     <_type>virksomhed</_type> 
     <_id>4001115172</_id> 
     <_score>17.372461</_score> 
     <_source> 
     <Vrvirksomhed> 
     <cvrNummer>24347214</cvrNummer> 
     <regNummer> 
     <regnummer>A/S42018</regnummer> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil>1999-10-18</gyldigTil> 
     </periode> 
     <sidstOpdateret>2015-02-10T00:00:00+01:00</sidstOpdateret> 
     </regNummer> 
     <brancheAnsvarskode>0</brancheAnsvarskode> 
     <reklamebeskyttet>true</reklamebeskyttet> 
     <navne> 
     <navn>RIBO VINDUER A/S</navn> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil>1992-03-27</gyldigTil> 
     </periode> 
     <sidstOpdateret>2015-03-19T00:00:00+01:00</sidstOpdateret> 
     </navne> 
     <navne> 
     <navn>VELFAC INTERNATIONAL A/S</navn> 
     <periode> 
      <gyldigFra>1992-03-28</gyldigFra> 
      <gyldigTil>1995-01-17</gyldigTil> 
     </periode> 
     <sidstOpdateret>2015-03-19T00:00:00+01:00</sidstOpdateret> 
     </navne> 

     <binavne> 
     <navn>VELFAC INTERNATIONAL A/S</navn> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil>1992-03-27</gyldigTil> 
     </periode> 
     <sidstOpdateret>2015-02-10T00:00:00+01:00</sidstOpdateret> 
     </binavne> 

     <binavne> 
     <navn>VELFAC INTERNATIONAL A/S</navn> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2015-02-10T00:00:00+01:00</sidstOpdateret> 
     </binavne> 
     <beliggenhedsadresse> 
     <landekode>DK</landekode> 
     <fritekst /> 
     <vejkode>6375</vejkode> 
     <kommune> 
      <kommuneKode>667</kommuneKode> 
      <kommuneNavn>RINGKØBING</kommuneNavn> 
      <periode> 
      <gyldigFra /> 
      <gyldigTil>2006-12-31</gyldigTil> 
      </periode> 
      <sidstOpdateret>1999-10-15T00:00:00+02:00</sidstOpdateret> 
     </kommune> 
     <husnummerFra>5</husnummerFra> 

     <vejnavn>Ribovej</vejnavn> 
     <bynavn>Rindum</bynavn> 
     <postnummer>6950</postnummer> 
     <postdistrikt>Ringkøbing</postdistrikt> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil>2006-12-31</gyldigTil> 
     </periode> 
     <sidstOpdateret>2013-11-22T22:40:23+01:00</sidstOpdateret> 
     </beliggenhedsadresse> 
     <beliggenhedsadresse> 
     <landekode>DK</landekode> 
     <fritekst /> 
     <vejkode>1605</vejkode> 
     <kommune> 
      <kommuneKode>760</kommuneKode> 
      <kommuneNavn>RINGKØBING-SKJERN</kommuneNavn> 
      <periode> 
      <gyldigFra>2007-01-01</gyldigFra> 
      <gyldigTil /> 
      </periode> 
      <sidstOpdateret>2006-11-13T00:00:00+01:00</sidstOpdateret> 
     </kommune> 
     <husnummerFra>5</husnummerFra> 
     <adresseId /> 
     <sidstValideret /> 
     <husnummerTil /> 
     <bogstavFra /> 
     <bogstavTil /> 
     <etage /> 
     <sidedoer /> 
     <conavn /> 
     <postboks /> 
     <vejnavn>Ribovej</vejnavn> 
     <bynavn>Rindum</bynavn> 
     <postnummer>6950</postnummer> 
     <postdistrikt>Ringkøbing</postdistrikt> 
     <periode> 
      <gyldigFra>2007-01-01</gyldigFra> 
      <gyldigTil>2011-05-31</gyldigTil> 
     </periode> 
     <sidstOpdateret>2006-12-28T13:37:26+01:00</sidstOpdateret> 
     </beliggenhedsadresse> 
     <beliggenhedsadresse> 
     <landekode>DK</landekode> 
     <fritekst /> 
     <vejkode>1142</vejkode> 
     <kommune> 
      <kommuneKode>615</kommuneKode> 
      <kommuneNavn>HORSENS</kommuneNavn> 
      <periode> 
      <gyldigFra>2007-01-01</gyldigFra> 
      <gyldigTil /> 
      </periode> 
      <sidstOpdateret>2006-11-13T00:00:00+01:00</sidstOpdateret> 
     </kommune> 
     <husnummerFra>23</husnummerFra> 
     <adresseId>0b29b248-c194-4363-b687-c774c93c06f5</adresseId> 
     <sidstValideret>2017-05-12T11:06:28.712+02:00</sidstValideret> 
     <husnummerTil /> 
     <bogstavFra /> 
     <bogstavTil /> 
     <etage /> 
     <sidedoer /> 
     <conavn /> 
     <postboks /> 
     <vejnavn>Bygholm Søpark</vejnavn> 
     <bynavn /> 
     <postnummer>8700</postnummer> 
     <postdistrikt>Horsens</postdistrikt> 
     <periode> 
      <gyldigFra>2011-06-01</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2013-06-26T19:32:22+02:00</sidstOpdateret> 
     </beliggenhedsadresse> 
     <telefonNummer> 
     <kontaktoplysning>96755200</kontaktoplysning> 
     <hemmelig>false</hemmelig> 
     <periode> 
      <gyldigFra>2002-06-21</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2002-06-25T19:34:17+02:00</sidstOpdateret> 
     </telefonNummer> 
     <telefaxNummer> 
     <kontaktoplysning>96755201</kontaktoplysning> 
     <hemmelig>false</hemmelig> 
     <periode> 
      <gyldigFra>2002-06-21</gyldigFra> 
      <gyldigTil>2004-12-09</gyldigTil> 
     </periode> 
     <sidstOpdateret>2002-06-25T19:34:17+02:00</sidstOpdateret> 
     </telefaxNummer> 
     <elektroniskPost> 
     <kontaktoplysning>[email protected]</kontaktoplysning> 
     <hemmelig>false</hemmelig> 
     <periode> 
      <gyldigFra>2000-01-23</gyldigFra> 
      <gyldigTil>2000-11-01</gyldigTil> 
     </periode> 
     <sidstOpdateret>2000-04-01T14:51:22+02:00</sidstOpdateret> 
     </elektroniskPost> 
     <elektroniskPost> 
     <kontaktoplysning>[email protected]</kontaktoplysning> 
     <hemmelig>false</hemmelig> 
     <periode> 
      <gyldigFra>2002-01-23</gyldigFra> 
      <gyldigTil>2004-12-09</gyldigTil> 
     </periode> 
     <sidstOpdateret>2002-01-25T19:31:18+01:00</sidstOpdateret> 
     </elektroniskPost> 
     <obligatoriskEmail> 
     <kontaktoplysning>[email protected]</kontaktoplysning> 
     <hemmelig>true</hemmelig> 
     <periode> 
      <gyldigFra>2015-11-30</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2015-11-30T15:45:31+01:00</sidstOpdateret> 
     </obligatoriskEmail> 
     <livsforloeb> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>1999-10-16T19:50:10+02:00</sidstOpdateret> 
     </livsforloeb> 
     <hovedbranche> 
     <branchekode>203020</branchekode> 
     <branchetekst>Fremstilling af dele af træ til bygninger</branchetekst> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil>2007-12-31</gyldigTil> 
     </periode> 
     <sidstOpdateret>2013-11-22T22:19:29+01:00</sidstOpdateret> 
     </hovedbranche> 
     <hovedbranche> 
     <branchekode>162300</branchekode> 
     <branchetekst>Fremstilling af bygningstømmer og snedkeriartikler i øvrigt</branchetekst> 
     <periode> 
      <gyldigFra>2008-01-01</gyldigFra> 
      <gyldigTil>2012-12-31</gyldigTil> 
     </periode> 
     <sidstOpdateret>2015-11-23T13:46:28+01:00</sidstOpdateret> 
     </hovedbranche> 
     <hovedbranche> 
     <branchekode>467310</branchekode> 
     <branchetekst>Engroshandel med træ, trælast og byggematerialer</branchetekst> 
     <periode> 
      <gyldigFra>2013-01-01</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2015-11-23T13:46:28+01:00</sidstOpdateret> 
     </hovedbranche> 
     <bibranche1> 
     <branchekode>515310</branchekode> 
     <branchetekst>Engroshandel med træ, trælast og byggematerialer</branchetekst> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil>2006-12-31</gyldigTil> 
     </periode> 
     <sidstOpdateret>2013-11-22T22:19:29+01:00</sidstOpdateret> 
     </bibranche1> 
     <bibranche1> 
     <branchekode>682040</branchekode> 
     <branchetekst>Udlejning af erhvervsejendomme</branchetekst> 
     <periode> 
      <gyldigFra>2014-01-01</gyldigFra> 
      <gyldigTil>2014-01-01</gyldigTil> 
     </periode> 
     <sidstOpdateret>2015-11-20T15:14:41+01:00</sidstOpdateret> 
     </bibranche1> 
     <virksomhedsstatus> 
     <status>NORMAL</status> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2015-02-10T00:00:00+01:00</sidstOpdateret> 
     </virksomhedsstatus> 
     <virksomhedsform> 
     <virksomhedsformkode>60</virksomhedsformkode> 
     <kortBeskrivelse>A/S</kortBeskrivelse> 
     <langBeskrivelse>Aktieselskab</langBeskrivelse> 
     <ansvarligDataleverandoer>E&amp;S</ansvarligDataleverandoer> 
     <periode> 
      <gyldigFra>1969-09-29</gyldigFra> 
      <gyldigTil /> 
     </periode> 
     <sidstOpdateret>2013-11-22T21:57:52+01:00</sidstOpdateret> 
     </virksomhedsform> 
+0

那么问题是什么?我会指出在你所包含的XML中没有元素'hits',也没有包含单个空间的'gyldigTil'元素。 –

+0

我简化了xml,因为它很大。我想检查gyldigTil是否为空的问题。并且只保留父元素,其中gyldigTil为空。 –

+1

为什么人们总是'.ToList()'没有任何理由的东西? – tinudu

回答

0

更多LINQish方式有被改变检查的emptyness。 这一个做你想要的吗?

xd.Descendants("hits") 
.Elements("_source") 
.Descendants("periode") 
.Elements("gyldigTil") 
.Where(gt => gt.Nodes().Any()) 
.Select(gt => gt.Parent.Parent) 
.Remove() 
+0

它不工作也许我的根是错误的,它不会产生任何错误 –

+0

我刚刚添加我的XML文件的根,我想也许我做错了。 –

+0

你不需要这里的变量 - 你可以调用'Remove'扩展方法:'xd.Root.Element(...)。Elements(...).Remove();' –

相关问题