0
<?xml version="1.0" encoding="utf-8"?>
<configuration version="45.2012.4.23" xmlns="http://www.example.com/">
  <description>example.com</description>
  <reading />
  <connection>
    <sourceId>452342341</sourceId>  
    <organization/>
    <field>*</field>
  </connection>
  <source>
    <sourceId>452342341</sourceId>
    <connectionContext>
      <id />
      <name>testing</name>
      <description />
      <contextType>Section</contextType>      
      <organization/>
      <field>Demo Field</field>
      <section>testing</section>
      <subSection />
    </connectionContext>
    <Mode>Section</Mode>
    <activity>bell Testing</activity>
  </source>
</configuration>

textboxesこのxmlを読み込んでデータをwindows形式で表示したいです。

リストボックスでxmlファイルを選択すると、タグから最初のデータセットを読み取り、connectionタグから2番目のデータセットを読み取りconnectionContext、テキストボックスに値を表示します。

以下のコードが機能しないnull値がある場合の問題???

 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;
            textBox3.Text = conn.Element(ns + "description").Value;
            textBox4.Text = conn.Element(ns + "uri").Value;
            textBox5.Text = conn.Element(ns + "username").Value;

            var conn1 = doc.Root.Element(ns + "connectionContext");

            textBox7.Text = conn1.Element(ns + "field").Value;
            textBox8.Text = conn1.Element(ns + "bellName").Value;
            textBox9.Text = conn1.Element(ns + "id").Value;
            textBox10.Text = conn1.Element(ns + "bellboreName").Value;    
        }

Object reference not set to an instance of an object. Object reference not set to an instance of an object.このフィールドのエラー メッセージ(ns + "field").Value;

4

1 に答える 1

2

connectionContextはドキュメント ルートの下でsourceはなく、次の場所にあるため、これを変更します。

var conn1 = doc.Root.Element(ns + "connectionContext");

これに:

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

または、スキーマをもう少し柔軟にできます。

var conn1 = doc.Descendants(ns + "connectionContext").First();
于 2012-05-14T08:14:21.440 に答える