【问题标题】:Delete specific Elements in XML file in C#在 C# 中删除 XML 文件中的特定元素
【发布时间】:2020-04-06 00:35:49
【问题描述】:

这是我的 XML 文件,我想保留电子邮件和电话号码元素,并在运行时删除其余元素(名字 - 性别)。

<Users>
  <User idNumber="651635163">
    <email>d@d.d</email>
    <phoneNumber>0528754964</phoneNumber>
    <FirstName>kujygv</FirstName>
    <LastName>uyf</LastName>
    <FatherName>uyfy</FatherName>
    <MotherName>uyf</MotherName>
    <GfatherName>uyf</GfatherName>
    <DateOfBirth>06/04/1999</DateOfBirth>
    <ImagePath>C:\Users\m\Desktop\pictures\me\meirl.jpg</ImagePath>
    <Address>fyu</Address>
    <Gender>זכר</Gender>
  </User>
</Users>

所以结果应该是这样的

<Users>
      <User idNumber="651635163">
        <email>d@d.d</email>
        <phoneNumber>0528754964</phoneNumber>
      </User>
</Users>

我尝试使用 SelectNodes,但无法使其工作,提前致谢!

【问题讨论】:

    标签: c# xml linq-to-xml


    【解决方案1】:

    另一种创建仅包含所需元素的新 xml 的方法

    var document = XDocument.Load("path to the file");
    
    var users = document.Descendants("User")
        .Select(u => new XElement("User", u.Element("email"), u.Element("phoneNumber"))
        .ToArray();
    
    var newDocument = new XDocument(new XElement("Users", users)); 
    newDocument.Save("path to the file");
    

    【讨论】:

      【解决方案2】:

      检查一下。

      c#

      void Main()
      {
          const string fileName = @"e:\temp\Sadi.xml";
          const string USER = "User";
      
          // list of XML element names to keep
          var listOfElements = new List<string> {"email", "phoneNumber"};
      
          XDocument xdoc = XDocument.Load(fileName);
          List<XElement> nodes = xdoc.Descendants(USER).ToList();
      
          // Contains() simulates SQL NOT IN clause
          nodes.Elements()
              .Where(x => !listOfElements.Contains(x.Name.LocalName))
              .Remove();
      
          // save back to the file
          xdoc.Save(fileName);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2018-05-12
        相关资源
        最近更新 更多