2012-03-08 78 views
1

我有修改「duyurular.xml」,但節點<baslik>非標準和價值包含。 如何更改節點<baslik>的值。如何修改XML節點混合內容的

「duyurular.xml」 文件結構:

<?xml version="1.0" encoding="utf-8"?> 
    <duyurular> 
     <duyuru> 
     <baslik>Okul Müdürlüğü<kurum>Eğitim-Öğretim</kurum><tarih>11.11.2011-17:17</tarih><url>http://www.example.com/XmlDuyuru.aspx?duyurudetayId=2012581131705</url><duyurudetay>Detay bilgileri One</duyurudetay><id>2012581131705</id></baslik> 
     <baslik>AB Eğitim ve Gençlik <kurum>ARGE</kurum><tarih>11.11.2011-17:17</tarih><url>http://www.example.com/XmlDuyuru.aspx?duyurudetayId=2012581131701</url><duyurudetay>Detay bilgileri Two</duyurudetay><id>2012581131701</id></baslik> 
     </duyuru> 
    </duyurular> 

C#後面代碼:

void xmDuzelt(string idim) 
    { 
     string dosyaadi = Server.MapPath("~/xml/") + "duyurular.xml"; 
     XDocument doc = XDocument.Load(dosyaadi); 

     var q = from duzey1 in doc.Descendants("duyuru") 
       let elemnt = duzey1.Element("baslik").Element("id")      
       where elemnt != null && elemnt.Value == idim 
       select duzey1; 

     foreach (var item in q) 
       { 
        item.Element("baslik").Element("kurum").Value = this.txtKurum.Text; 
        item.Element("baslik").Element("duyurudetay").Value = this.txtduyurudetay.Value;      
       }  
     doc.Save(dosyaadi); 
     Response.Redirect(Request.Url.ToString()); 
    } 
+0

我希望修改後的標題描述你的實際問題。 – Filburt 2012-03-08 10:29:21

回答

0

元素和改性照常屬性。

明年方式修改

Baslik元素的文本:

如果baslik元素文本數是一個總是:

var baslik = item.Element("baslik"); 

    var text = baslik.Nodes().OfType<XText>().First(); 
    text.Value = new_baslik_text; 

如果零個或一個:

var text = baslik.Nodes().OfType<XText>().FirstOrDefault(); 
    if (text != null) 
     text.Value = new_baslik_text; 
    else 
     baslik.AddFirst(new XText(new_baslik_text)); 

如果零個或多個:

foreach (var text in baslik.Nodes().OfType<XText>().ToArray()) 
     text.Remove(); 
    baslik.AddFirst(new XText(new_baslik_text));  
0

如果你想保留孩子的元素,你可以這樣做:

var baslik = item.Element("baslik"); 
var children = baslik.Elements().ToArray(); 
baslik.Value = "new value"; // removes any children 
foreach (XElement child in children) // re-add child elements 
    baslik.Add(child);