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
いくつかの追加の属性がありxmlAttributeCollection=null
、メソッドを再度実行する前にそれを null ( ) に設定できません。走れないからxmlAttributeCollection.append
。
xmlAttributeCollection
では、属性をもう一度追加する前にリセットするにはどうすればよいですか?