【发布时间】:2015-05-23 04:10:47
【问题描述】:
我想创建一个 XmlAttributeCollection 并根据条件添加一些属性。这是我尝试过的。
XmlElement fishElement = doc.CreateElement(string.Empty, "fi", string.Empty);
XmlAttributeCollection attCollection = AddExtraAttributes(doc,condition);
foreach (XmlAttribute attribute in attCollection)
{
fishElement.Attributes.Append((XmlAttribute)attribute.Clone());
}
private XmlAttributeCollection AddExtraAttributes(XmlDocument doc,bool condition)
{
XmlAttributeCollection xmlAttributeCollection;
if(condition)
{
XmlAttribute attribute = doc.CreateAttribute("A");
attribute.Value = "value1";
xmlAttributeCollection.Append(attribute);
}
else
{
XmlAttribute attribute = doc.CreateAttribute("B");
attribute.Value = "value2";
xmlAttributeCollection.Append(attribute);
}
return xmlAttributeCollection;
}
但是这样一来,我就遇到了这个错误:
xmlAttributeCollection 在访问之前可能没有被初始化
如果我尝试这样做:
XmlAttributeCollection xmlAttributeCollection = new XmlAttributeCollection;
上面写着:
此处无法访问内部构造函数“XmlAttributeCollection”
那么我怎样才能让它工作呢?
更新
所以我这样解决了问题
XmlAttribute newAttr = doc.CreateAttribute("genre");
newAttr.Value = "novel";
XmlAttributeCollection attrColl = doc.DocumentElement.Attributes;
attrColl.Append(newAttr);
但是现在每次我调用AddExtraAttributes,xmlAttributeCollection 都有一些额外的属性,在我再次运行我的方法之前,我无法将其设置为 null (xmlAttributeCollection=null)。因为那样我就不能运行xmlAttributeCollection.append。
那么我如何在重新添加属性之前重置xmlAttributeCollection?
【问题讨论】:
标签: c# xml xmlattributecollection