c# - 如何使用 C# 检查 XML 中具有特定属性值的元素

标签 c# c#-4.0 c#-3.0 linq-to-xml

我的XML文件如下

<?xml version="1.0" encoding="utf-8"?>
<BallList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Brand name="brand1">
 <BallName>brand1 ball</BallName>
</Brand
<Brand name="brand2">
 <BallName>brand2 ball</BallName>
</Brand>
</BallList>

我需要检查具有名称属性的特定品牌,如果不存在,则应使用 C# Linq 将其添加到 xml 文件中。谁能帮我解决这个问题。

最佳答案

您可以使用 Linq To XMl

System.Xml.Linq

    var f = XDocument.Load("c:\\00.xml");

    var myBrand = f.Root.Elements("Brand")
        .Where(x => x.Attribute("name").Value == "MyBrand").FirstOrDefault();

    if (myBrand == null)
    {
        // insert here
        f.Root.Add(
            new XElement("Brand",  new XAttribute("name", "MyBrand"), 
                new XElement("BallName", "MyBrand Ballname"))
            );
        f.Save("c:\\00.xml");
    }

这段代码产生了这个结果

<?xml version="1.0" encoding="utf-8"?>
<BallList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Brand name="brand1">
    <BallName>brand1 ball</BallName>
  </Brand>
  <Brand name="brand2">
    <BallName>brand2 ball</BallName>
  </Brand>
  <Brand name="MyBrand">
    <BallName>MyBrand Ballname</BallName>
  </Brand>
</BallList>

关于c# - 如何使用 C# 检查 XML 中具有特定属性值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802725/

相关文章:

c# - 静态只读字段初始化程序与静态构造函数初始化

winforms - 尝试在 C# 中使用 ActiveX 控件加载 PDF 文件时出现 COMException 错误

c# - 从静态函数调用非静态函数

c# - 推送通知上的应用程序重新加载单击 Xamarin Forms

c# - SteamAPI_Init() 失败。有关详细信息,请参阅 Valve 的文档或此行上方的注释。 | Steamworks.NET

.net-4.0 - WCF 在客户端和主机之间共享对象

c# - VB6 到 COM 可调用包装的 .NET - 查找 .NET 库的问题

c# - 首先使用实体​​框架代码为存储库实现通用方法

asp.net-mvc - 无法获取局部 View cshtml 的 ViewModel

c# - Monitor.Enter(object, ref bool) 比 Monitor.Enter(object) 有什么优势?