C#でXElement属性名を変更するにはどうすればよいですか?
だからもし
<text align="center"> d hhdohd </text>
属性名を変更した後、テキスト整列に整列します
<text text-align="center> d hhdohd </text>
を使用して、属性LINQ-XML
を削除しexisting
てから新しい属性を追加できます。
Xmlマークアップ:
<?xml version="1.0" encoding="utf-8"?>
<root>
<text align="center" other="attribute">Something</text>
</root>
コード:
XDocument doc = XDocument.Load(file);
var element = doc.Root.Element("text");
var attList = element.Attributes().ToList();
var oldAtt = attList.Where(p => p.Name == "align").SingleOrDefault();
if (oldAtt != null)
{
XAttribute newAtt = new XAttribute("text-align", oldAtt.Value);
attList.Add(newAtt);
attList.Remove(oldAtt);
element.ReplaceAttributes(attList);
doc.Save(file);
}
使用XmlElement SetAttribute
し、RemoveAttribute
構文が頭から離れているかどうかわからないので、削除して再度追加する必要があると思います。ただし、ノードにxpathできるはずです。既存の属性の値をキャプチャし、属性を削除し、新しい属性を作成して、古い値を割り当てます。
linq-to-xmlを使用XElement.ReplaceAttributes
すると、次のようなメソッドを使用してxml属性を更新できます。
XElement data = XElement.Parse (@"<text align=""center""> d hhdohd </text>");
data.ReplaceAttributes(
new XAttribute("text-align", "center")
);