2011-07-28 9 views
0

私はこれでエラーが発生し続け、私が間違っているのを見ることができません。XML ListViewのエラー

ここでコード

private void _FixSave_Offline_Load(object sender, EventArgs e) 
{ 
    System.Xml.XmlDocument NewGame = new System.Xml.XmlDocument(); 
    NewGame.Load(Application.StartupPath + "//Files//Checks_Offline.xml"); 

    foreach (System.Xml.XmlNode nameNode in NewGame.SelectNodes("//Games//NewGame")) 
    { 
     listView1.Items.Add(nameNode.Attributes["Name"].InnerText); 
    } 
} 

そして、ここでXMLレイアウトが

ある
<Games> 
<NewGame> 
    <Name></Name> 
    <Check></Check> 
    <Static></Static> 
    <Location></Location> 
    <Start></Start> 
    <Length></Length> 
    <FoundBy></FoundBy> 
    <Verified></Verified> 
</NewGame> 

ここにありますが、私は

Error Message

とVisual Studioには、次のコードをハイライト得続けるとエラーになります:

listView1.Items.Add(nameNode.Attributes["Name"].InnerText); 

「//」だけでなく「/」も使ってみましたので、これを修正するものはすべて歓迎されます。私は間違っている。

+0

'nameNode'オブジェクトはヌルか' nameNode.Attributes ["Name"] 'ヌルですか? Attributesコレクションで起きている場合は、現在のノードで「Name」という名前の属性を見つけることができません。 – jdmonty

答えて

2

「Name」という名前の属性を探していますが、例のXML要素には属性がありません。

私はあなたの名前のノードのコンテンツをしたいと考えている:

foreach (System.Xml.XmlNode nameNode in NewGame.SelectNodes("//Games//NewGame/Name")) 
{ 
    listView1.Items.Add(nameNode.Value); 
} 

あなたのXML文書の実際の構造に応じて、XPath式でビットを再生する必要がある場合があります。

0

私はいくつかの理由で、あなたのXMLの例を参照してください、しかし、あなたはまた、属性/要素が正確に「名前」に綴られていることを確認します

Elements and Attributesの間を区別していることを確認することができませんでした。私は大文字と小文字を区別していると信じています

-

編集:今、私はあなたのXMLを表示することができています、「名前」は、実際の要素ではなく属性であることが表示されます。

プロパティItem、またはnameNode.Attributesの代わりにValueプロパティを使用してみてください。

0

私はそれを動作させました。私はエラーがvirtuallist = trueであったことが分かります。 Tim私はあなたが望む結果を得るためにあなたのコードを少し上に修正しました。誰もが将来の参考として使うためのコードです。

private void _FixSave_Offline_Load(object sender, EventArgs e) 
{ 
    System.Xml.XmlDocument NewGame = new System.Xml.XmlDocument(); 
    NewGame.Load(Application.StartupPath + "//Files//Checks_Offline.xml"); 

    foreach (System.Xml.XmlNode nameNode in NewGame.SelectNodes("//Games//NewGame/Name")) 
    { 
     listView1.Items.Add(nameNode.InnerText); 
    } 

} 

次に、結果の簡単なスクリーンショットを示します。

Screen Shot Of Result

が、これは同様に他の人がお役に立てば幸いです。私にこのことについてコメントした上記の方々、そしてTimに対する大きな感謝のおかげです。