我是LINQ to XML的新手。我有两个变量一个和两个,我想在XML中的属性中设置这些变量值。
static void Main(string[] args)
{
string one = "first";
string two = "Second";
XDocument doc = XDocument.Load(test.xml);
}
XML
<Root>
<Details XIndex="One" Index="">
<abc></abc>
</Details>
<Details XIndex="Two" Index="">
<xyz></xyz>
</Details>
</Root>
现在请告诉我如何在详细信息节点的Index属性中设置一个和两个变量值。
示例 - 我想要低于输出。
<Root>
<Details XIndex="One" Index="First">
<abc></abc>
</Details>
<Details XIndex="Two" Index="Second">
<xyz></xyz>
</Details>
</Root>
请告诉我。
提前致谢。
答案 0 :(得分:5)
您可以使用XElement.SetAttributeValue()
方法:
var element = doc.Elements("Details")
.Single(x=>x.Attribute("XIndex").Value=="One");
element.SetAttributeValue("Index", "First");
答案 1 :(得分:2)
如果你经常打这个电话,你可以把它放到辅助方法中,例如:
private static void SetValueToDetailElement(XDocument doc, string xIndex, string value)
{
var detail = doc.Elements("Details").SingleOrDefault(x=>x.Attribute("XIndex").Value==xIndex);
if(detail != null)
detail.SetAttributeValue("Index", value);
}
然后在您的主电话中调用以下内容。
SetValueToDetailElement(doc, "One", "First");
SetValueToDetailElement(doc, "Two", "Second");
答案 2 :(得分:0)
有没有理由为什么这些人提供的答案不会写入XML?没有例外,一切看起来都很好,除了它没有写入文件。
这是我的代码
string file = "c:/message.xml";
XDocument d = XDocument.Load(file);
SetValueToIdElement(d, id, value);
private static void SetValueToIdElement(XDocument doc, string Id, string value)
{
var detail = doc.Elements("context").SingleOrDefault(x => x.Attribute("id").Value == Id);
if (detail != null)
detail.SetAttributeValue("value", value);
}
基本上与上述相同