どうすればよいか分かりません。c#XElementを使用する要素の要素
ここで私が働いているXMLです:私はITEM_TYPEとitem_type2の値を渡し、その組み合わせのプロパティ値のリストを返す関数を書いて
<configuration>
<tag1>
<interestingstuff>avalue</interestingstuff>
</tag1>
<tag2>
<item_type1 name="foo">
<item_type2 name="bar">
<property>value1</property>
<property>value2</property>
</item_type2>
<item_type2 name="pub">
<property>valueX</property>
<property>valyeY</property>
</item_type2>
<item_type1>
<item_type1 name="foo2">
<item_type2 name="pub">
<property>valueX</property>
</item_type2>
</item_type1>
</tag2>
</configuration>
が。
ここに私のものがあります。それは "オブジェクトのインスタンスに設定されていないオブジェクト"の例外を、その時点でスローします。
ArrayList properties = new ArrayList();
XDocument config = new XDocument();
config = XDocument.Parse(XML_Text);
foreach (XElement item1 in config.Root.Element("tag2").Nodes())
{
if (item1.Attribute("name").Value.ToString() == passed_item1_value)
{
//this is where it's breaking
foreach (XElement item2 in item1.Elements("item_type2").Nodes())
{
if item2.Attribute("name").Value.ToString() == passed_item2_value)
{
foreach (XElement property in item2.Elements("property").Nodes())
{
properties.Add(property.Value.ToString());
}
break;
}
}
break;
}
}
私はこれを知っていませんが、わかりません。
似た何かを助けが必要ですか?常に完全なエラーメッセージを含める。 –
直接回答は、XElementがノード()上で反復できないことです(おそらく)。しかし、以下のLinqの答えははるかに優れています。 –
Breaking = "オブジェクト参照がオブジェクトのインスタンスに設定されていません"例外。 これは期待されています。 Henk Holtermanがちょうど投稿したのと同じことを理解しました。これは、反復可能ではないものを反復しようとしています。しかし、正しい方法を見つけようとしたとき、私はちょうど混乱しました。 –