繁体   English   中英

删除 C# 中 XML 文件中的特定元素

[英]Delete specific Elements in XML file in C#

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

<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#

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);
}

仅使用所需元素创建新 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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM