0

XML ファイルから値を取得しようとしていますが、いくつかの値が空であることがわかりました。 textBox6, textBox7, textBox14対応する要素の属性値は空/null です。エラー メッセージは次のとおりですNull reference error was unhanded。どうすればこれを修正できますか??

private void DisplayFile(string path)
    {

        var doc = XDocument.Load(path);
        var ns = doc.Root.GetDefaultNamespace();
        var conn = doc.Root.Element(ns + "connection");

        textBox1.Text = conn.Element(ns + "sourceId").Value;


        var doc1 = XDocument.Load(path);
        var ns1 = doc.Root.GetDefaultNamespace();         
        var conn1 = doc.Root.Element(ns1 + "connectionContext");


    }
4

2 に答える 2

4

指定された要素が XML に存在しない場合、foo.Element("someNode")null が返されます。アクセス.Valueすると、NullReferenceException が発生します。

この NullReferenceException を回避するには、要素が null でないかどうかを確認する必要があります。

contextType の例:

var contextType = conn1.Element(ns + "contextType");
if (contextType != null)
{
  textBox15.Text = contextType.Value;
}

アップデート:

ルート要素からconnectionContextノードをロードしようとしました。ただし、このノードはソースノードの子です。最初にこのノードをロードする必要があります:

var source = doc.Root.Element(ns + "source");
var conn1 = source.Element(ns + "connectionContext");
于 2012-05-10T12:01:26.820 に答える
0

あなたの問題はこれを試してみてください(テキストボックスを作成したくなかった文字列を使用しています)

        var doc = XDocument.Load("C:\\Test\\stovfl.xml");
        var ns = doc.Root.GetDefaultNamespace();

        var conn = doc.Root.Element(ns + "connection");
        string s1 = conn.Element(ns + "sourceId").Value;
        string s2 = conn.Element(ns + "username").Value;

        var conn1 = doc.Root.Element("source");

        var conn2 = conn1.Element("connectionContext");
        string s6 = conn2.Element(ns + "organization").Value;
        string s7 = conn2.Element(ns + "field").Value;

        string s14 = conn2.Element(ns + "description").Value;
        string s15 = conn2.Element(ns + "contextType").Value;

問題は、sourceにconnectionContextがあるが、 Rootで見つけようとすることでした

于 2012-05-10T12:31:44.017 に答える