2017-08-08 47 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();' –

相關問題