C#XElement更新节点

C#XElement更新节点,c#,xml,linq,C#,Xml,Linq,我只是想知道在不更新整个对象的情况下更新XML中现有节点的最佳方法是什么?让我想想 在我的XML文档中,我有以下内容: <DirUser override="always"> <UserDirectory header="Users" enabled="false" /> <StaffDirectory header="Staff" enabled="true" /> <Phones>

我只是想知道在不更新整个对象的情况下更新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>
public void UpdateContact(XElement element)
{

}
XElement contacts = XElement.Load("C:\\Path\\"); 
我可以通过以下方式使用XElement调用此方法:

   <DirUser override="always">
      <UserDirectory header="Users" enabled="false" /> 
      <StaffDirectory header="Staff" enabled="true" />
          <Phones>
             <Field>Number</Field>
             <Field>Mob</Field>
           </Phones>
      </StaffDirectory>
   </DirUser>
public void UpdateContact(XElement element)
{

}
XElement contacts = XElement.Load("C:\\Path\\"); 
我不知道是否需要再次解析XML,最有效的方法是什么来更改“visible=”


谢谢

这完全取决于您的需要

  • 如果只需将
    可见
    设置为true,代码就足够了
  • 如果您需要向用户提供更改此XML代码、将XML代码导入应用程序或任何其他需要使用XML代码的操作的可能性,您可以使用解析

  • XElement类似于包含其他XElement/节点等的树结构。 如果您真的想传递从Load获得的XElement,那么必须在UpdateMethod中选择正确的XElement

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

    但是您也可以在之前选择用户XElement并将用户传递给该方法

    谢谢你的帮助。。我试图添加
    XElement user=element.element(“用户”)我得到空异常。。我认为它无法在XML中找到“user”——我应该在什么地方解析它吗?我发现在您的示例中,user缺少结尾“/”。也许这就是问题所在?嘿-不,这不是问题所在。当我传入值“element”时,它看起来很好。我认为选择“用户”是一个问题,因为其中还有其他节点??如果其中有更多的用户,元素(“用户”)将为您提供第一个节点。也许您可以更新您的问题,以便更详细地查看xml文件。例如,如果用户不是根元素的子节点,并且在xml结构的更深处,则可以使用子体(“用户”)。首先()嘿-我更新了我的帖子,现在只需要访问此帖子。。访问这个应该没有问题吗?请定义“最佳”。