【问题标题】:How to add attributes to a Xelement如何向 Xelement 添加属性
【发布时间】:2021-08-19 04:53:22
【问题描述】:

这是我插入 XElement 的代码

XDocument doc = XDocument.Load("Database.xml");
XElement root = new XElement("SCENE" , "SCENE_" + strSceneName);
var scenePath = doc.XPathSelectElement("//DATABASE");
scenePath.Add(root);
doc.Save("Database.xml");

元素是这样插入的

<SCENE>SCENE_ProjectedScore_Logo</SCENE>

这是需要的

<SCENE SCENE_NAME="SCENE_ProjectedScore_Logo"SCENE>

我需要在我的代码中做哪些更改才能实现这一点。

【问题讨论】:

  • 您想向SCENE 元素添加单个属性吗?还是想要它的多个属性?
  • @PrasadTelkikar SCENE 下的多个属性
  • 如果SCENE下有多个你想要的属性,那么最好使用SetAttributeValue方法。我已经在回答中提到了使用此方法的原因,请检查一下

标签: c# xml


【解决方案1】:

不要将第二个参数作为字符串传递给 XElement root ,而是使用 XElement 类中的 SetAttributeValue() 函数。

喜欢,

XDocument doc = XDocument.Load("Database.xml");

XElement root = new XElement("SCENE"); //Update instanciation of XElement
root.SetAttributeValue("SCENE_NAME", $"SCENE_{strSceneName}"); //Use this method to set attribute with value. 
 
var scenePath = doc.XPathSelectElement("//DATABASE");
scenePath.Add(root);
doc.Save("Database.xml");

MSDN 文档:XElement.SetAttributeValue


XElement.SetAttributeValue() 比使用 XAttribute 参数调用 XElement 构造函数的好处是:(From MSDN)

此方法旨在使维护列表变得容易 名称/值对作为一组属性。

【讨论】:

    【解决方案2】:

    如果你替换

    XElement root = new XElement("SCENE" , "SCENE_" + strSceneName);
    

    XElement root = new XElement("SCENE" , new XAttribute("SCENE_NAME", "SCENE_" + strSceneName));
    

    你应该得到你想要的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多