0

ボタンをクリックした後にこのメソッドを呼び出す私のコード。このメソッドは、行に値を含む MessageBox キーを出力する必要があります。

public static void LoadFromFile()
{
    try
    {
        using (XmlReader xr = XmlReader.Create(@"config.xml"))
        {
            string sourceValue = "";
            string sourceKey = "";
            string element = "";
            string messageBox = "";

            while (xr.Read())
            {
                if (xr.NodeType == XmlNodeType.Element)
                {
                    element = xr.Name;
                    if (element == "source")
                    {
                        sourceKey = xr.GetAttribute("key");
                    }
                }
                else if (xr.NodeType == XmlNodeType.Text)
                {
                    if (element == "value")
                    {
                        sourceValue = xr.Value;
                    }
                }
                else if ((xr.NodeType == XmlNodeType.EndElement) && (xr.Name == "source"))
                {
                    // there is problem
                    messageBox += sourceKey + " " + sourceValue + "\n";
                }
            }
            MessageBox.Show(messageBox);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("" + ex);
    }
}

メソッドは、すべてのキーを正確に必要な値で出力します。ただし、値メソッドを使用した最後のキーは 2 回出力されます。ソース config.xml には 3 つのキーと 3 つの値しかありませんが、メソッドは 4 つのキーと 4 つの値を出力します。

これは出力の例です:

key1 myValue1

key2 myValue2

key3 myValue3

key3 myValue3

そして別の例:

犬のワンワン

猫ニャー

アヒルのクワック

アヒルのクワック

これは私の XAML コードです:

<?xml version="1.0" encoding="utf-8"?>

<source>
  <source key="key1">
    <value>myValue1</value>
  </source>
  <source key="key2">
    <value>myValue2</value>
  </source>
  <source key="key3">
    <value>myValue3</value>
  </source>
</source>
4

2 に答える 2