C#XElement更新节点

时间:2014-07-29 08:34:30

标签: c# xml linq

我只是想知道在不更新整个对象的情况下更新XML中现有节点的最佳方法是什么?我们来看看..

在我的XML文档中,我有以下内容:

   <DirUser override="always">
      <UserDirectory header="Users" enabled="false" /> 
      <StaffDirectory header="Staff" enabled="true" />
          <Phones>
             <Field>Number</Field>
             <Field>Mob</Field>
           </Phones>
      </StaffDirectory>
   </DirUser>

在我的C#代码中,我有以下内容:

public void UpdateContact(XElement element)
{

}

我可以通过以下方式使用XElement调用此方法:

XElement contacts = XElement.Load("C:\\Path\\"); 

我很困惑我是否必须再次解析XML,最有效的方法是改变“visible =”?

由于

2 个答案:

答案 0 :(得分:1)

XElement就像一个包含其他XElements / Nodes等的树结构。 如果你真的想要传递你从Load获得的XElement,你必须在UpdateMethod中选择正确的XElement

public void UpdateMethod(XElement element)
{
  XElement toUpdate = element.Descendants("ElementName").First();
  toUpdate.SetAttributeValue("AttributeName", "AttributeValue");
}

但您也可以先选择用户XElement并将用户传递给Method。

答案 1 :(得分:0)

这取决于您的需求100%。

  1. 如果您需要仅将visible设置为true ,代码就足够了。
  2. 如果您需要向用户提供更改此XML代码的可能性,或者将XML代码导入您的应用程序,或者需要某些使用XML代码的任何其他内容 - 您可以使用解析。