如何修改混合内容的xml节点
本文关键字:xml 节点 混合 何修改 修改 | 更新日期: 2023-09-27 18:27:19
我修改了"duyurular.xml",但节点<baslik>
是非标准的,并且包含值。如何更改节点<baslik>
的值。
"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());
}
元素和属性照常修改。
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));
如果你想保留子元素,你可以这样做:
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);