2017-08-08 2 views
0

これは意味をなさない。しかし、私はかなり大きなXMLファイルを持っています。兄弟が出会って条件を満たす場合、私はすべての子供と親を削除したいところです。C#Linq to XML、兄弟にデータがあるときに親と子を削除する

したがって、ノード<Periode> <gyldigTil>にデータがあり、空でない場合は、その親と子をxmlファイルから削除してください。そして、ノードが空になるたびに、親の子と兄弟を保持します。

これは空要素を基底としての変更されたチェックと

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に要素ヒットはなく、単一のスペースを含む 'gyldigTil'要素もありません。 –

+0

私はxmlを簡略化しました。 gyldigTilが空であるかどうかをチェックしたい問題です。 gyldigTilが空の親要素のみを保持してください。 –

+1

なぜ人々は何の理由もなく常に.ToList()していますか? – tinudu

答えて

0

もっとLINQishの道私のLINQ C#です。 これはあなたが望むことをしますか?

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(...)。etc.Remove(); ' –

関連する問題