c# - 如果属性包含 XML 中的特定字符串,如何跳过?

标签 c# xml

我在我的 C# 代码中将所有 XML 数据作为子节点获取,但如果任何节点以“MARK”开头,我想跳过。只应处理没有“MARK”属性的节点。请帮忙。

xml数据

<AWE.ini> 
  <NOTICES name="MARK_AB1-1">
    <Type>
      CD
    </Type>
  </NOTICES>
  <NOTICES name="CGX1_CF-1">
    <Type>
      DF
    </Type>
  </NOTICES>
  <NOTICES name="CGX2_CF-2">
    <Type>
      DG
    </Type>
  </NOTICES>
  <NOTICES name="MARK_AB2-1">
    <Type>
      HJ
    </Type>
  </NOTICES>
</AWE.ini>

csharp代码

XmlDocument doc = new XmlDocument();
doc.Load("..\\AWE.xml");
XmlNodeList xnList = doc.SelectNodes("AWE.ini/NOTICES");
foreach (XmlNode xn in xnList)
{
    if (xn.HasChildNodes)
    {     
        foreach (XmlNode item in xn.ChildNodes)
        {
            m1.Type = xn.ChildNodes[0].InnerText.ToString();
        }
    }
}

最佳答案

只需向您的 XPath 添加条件,即可检查 name 属性的值。

XmlNodeList xnList = doc.SelectNodes("AWE.ini/NOTICES[not(starts-with(@name, 'MARK'))]");

只会返回这两个节点:

<NOTICES name="CGX1_CF-1">
  <Type>
    DF
  </Type>
</NOTICES>
<NOTICES name="CGX2_CF-2">
  <Type>
    DG
  </Type>
</NOTICES>

关于c# - 如果属性包含 XML 中的特定字符串,如何跳过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46722099/

相关文章:

c# - 将嵌套结构从 C# 编码到 C++

c# - 使用 WCF 服务注入(inject) - Dispose() 未触发

java - 如何将值传递给 xsd :string RPC encoded SOAP xml parameter in java?

jquery - 从 XML 创建资源数据捕获记录的脚本解决方案

c# - .NET Point.IsEmpty 与 IsDefined

C# 通用错误,提示它无法在相同的元组类型之间进行转换

c# - 注册外部登录 Web API

xml - 如何通过XML文档中的XPath查询查找祖先元素?

java - Android 子 Activity 导航中的 SlidingMenu

xml - 使用 XSL 合并和排序多个 XML 文件