使用XDocument/XPath c#修改Xml
本文关键字:修改 Xml XPath XDocument 使用 | 更新日期: 2023-09-27 18:06:54
我想知道XDocument与xml的关系以及它如何修改xml。假设我有下一个xml:
<client>
<firstName>Ian</firstName>
<firstName>Charles</firstName>
<city>LosAngeles</city>
<state>California</state>
</client>
我可以通过使用XDocument或XPath操作只留下一个"firstname"节点(在最顶部)吗?我想做一些类似。distinct()操作在LINQ中所做的事情。我想让我的结果xml看起来像这样:
<client>
<firstName>Ian</firstName>
<city>LosAngeles</city>
<state>California</state>
</client>
只需在client
中搜索所有firstName
元素并删除除第一个元素外的所有元素。您可以使用以下xpath查询找到要删除的所有firstName
元素:
//client/firstName[position() > 1]
所以把它们去掉。
doc.XPathSelectElements("//client/firstName[position() > 1]").Remove();
使用xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:'temp'test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
foreach(XElement client in doc.Descendants("client"))
{
List<XElement> firstNames = client.Elements("firstName").ToList();
XElement newFirstName = new XElement(firstNames.FirstOrDefault());
firstNames.Remove();
client.AddFirst(newFirstName);
}
}
}
}