c# - Xml中的无效操作?
问题描述
我正在尝试从其xml
值包含特定字符串的属性中删除属性。
这是我写的代码
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='#novel' ISBN='1-861001-57-5'>" +
"<title id ='#x'>Pride And Prejudice</title>" +
"</book>");
//Get the root element of the element
XmlElement el = doc.DocumentElement;
foreach (XmlElement a in doc.ChildNodes)
{
XmlAttributeCollection atributos = a.Attributes;
foreach (XmlAttribute att in atributos)
{
if (att.Value.StartsWith("#"))
{
a.RemoveAttribute(att.Name); //Gives invalid operation exception
}
}
}
在第二次迭代中,它给了我无效的操作错误。
我环顾四周,发现了一些可能是因为我正在尝试修改 foreach 循环中的集合。
如果是这样,最好的解决方案是什么?
我生成一个新的xml?
解决方案
您可以通过索引以相反的顺序遍历属性,如下面的代码,它不会抛出异常。
foreach (XmlElement a in doc.ChildNodes)
{
XmlAttributeCollection atributos = a.Attributes;
for (var i = atributos.Count - 1; i >= 0; i--)
{
var att = a.Attributes[i];
if (att.Value.StartsWith("#"))
{
a.RemoveAttribute(att.Name);
}
}
}
推荐阅读
- amazon-web-services - AWS CodeDeploy 与 Lambda 层
- c - 通过复合文字初始化结构变量 - 编译问题?
- flutter - 如何使用谷歌表将用户添加到 Firebase 身份验证
- google-apps-script - 将 docx 文件转换为 Google Docs 并放在同一文件夹中
- android - OkHttp 与 Android 网络安全配置中的证书固定
- javascript - 使用反应钩子切片 json 的数据
- android - 无法从已更改数据的片段中添加选项卡徽章
- flutter - 颤动如何将列对齐到嵌套在另一个列中
- django - 处理定向到反应应用程序主页/索引的 Django Rest Framework 404 页面
- python - 如何重构或友好的程序员视图?