【发布时间】:2011-07-13 00:44:19
【问题描述】:
请注意最后一条评论:OP 刚刚忘记打电话给Save()。
我正在检查 ProductDetails 节点下属性 ProductCount 的 XML,如果该属性不存在,则在此节点下添加具有默认值的属性。
我可以检查属性是否存在但我无法添加它,虽然它没有给我任何错误但甚至没有添加属性。
这是我的代码:
XDocument XMLDoc = XDocument.Load(fileName);
foreach (var detail in XMLDoc.Descendants(_ns + "ProductDetails"))
{
if (detail.Attribute("ProductCount") == null)
{
detail.SetAttributeValue("ProductCount", "1");
}
}
_ns 有我的命名空间。
我无法弄清楚我做错了什么,如果它不存在,为什么不添加 ProductCount 属性。
【问题讨论】:
-
我怀疑“foreach”不匹配任何元素。你能张贴源文件的片段吗?那么,_ns变量是如何定义的呢?
-
-
您的基本代码没问题,您如何确定“它不起作用”?你用过调试器吗?
-
foreach 很好我测试了它我搜索了 XML 中的属性并且没问题,如果属性不存在它给出 null,我什至检查了控件是否在 if 语句中但它没有添加属性。
-
"productDetails" 以小写开头?在代码中,您使用了上面的“P”。总是在 sn-p 中添加一个命名空间:xml 片段在哪里?你确定枚举会产生一些结果吗?
标签: c# xml linq-to-xml