私は私のxmlファイルにC#でXMLの値を保持して、すべての属性名を変更する方法は?
<CPU>
<NEW type="DOS" model="SV112">dos-8875</NEW>
<NEW type="DIN" model="SV544">din-9984</NEW>
<NEW type="FTP" model="SV774">ftp-9952</NEW>
<NEW type="DOS" model="SV112">dos-8854</NEW>
</CPU>
これを持っていると私はここでは、この
<CPU>
<NEW name="DOS" model-no="SV112">dos-8875</NEW>
<NEW name="DIN" model-no="SV544">din-9984</NEW>
<NEW name="FTP" model-no="SV774">ftp-9952</NEW>
<NEW name="DOS" model-no="SV112">dos-8854</NEW>
</CPU>
ようにそれを作りたいが、私はこれまでやっていることですが、残念ながらこれは単に最初の属性を変更します。
string path = @"d:\test.xml";
XDocument doc = XDocument.Load(path);
var element = doc.Root.Element("NEW");
var list = element.Attributes().ToList();
var oldAttr = list.Where(p => p.Name == "type").SingleOrDefault();
if (oldAttr != null)
{
XAttribute newAttr = new XAttribute("name", oldAttr.Value);
list.Add(newAttr);
list.Remove(oldAttr);
element.ReplaceAttributes(list);
}
Console.WriteLine(doc.ToString());
すべての属性名を変更したいのですが、どのようにこれをXDocument
で行うことができますか?
擬似コード:
element[0].attribute[0].name = "type";
element[1].attribute[0].name = "type";
element[2].attribute[1].name = "model-no";
これをデシリアライズする必要があると思います。この記事では、名前の制御などについて説明しています。https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx – Michael
値のために送信したリンクですが、属性名が必要です – w3000cpu