我在我的 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/