1

各エンドポイント要素の個々のアドレス値を読み取り、個々の値を個別のテキスト ボックスに表示しようとしています。

<client>  
  <endpoint address="http://127.0.0.1:" />
  <endpoint address="http://127.0.0.1:" />
  <endpoint address="net.tcp://127.0.0.1:" />
</client>

XML データを読み取って、最後の要素の値のみを表示できます。これは、実際に C# で何かを開発する最初の試みです。

ここに私が書いたコードの一部があります:

        XmlReader ReadFile = XmlReader.Create(AgentConfig.FileName);
        while (ReadFile.Read())
        {
            if ((ReadFile.NodeType == XmlNodeType.Element) && (ReadFile.Name == "endpoint"))
            {
                if (ReadFile.HasAttributes)
                {
                    textBox2.Text = ReadFile.GetAttribute("address");
                    textBox3.Text = ReadFile.GetAttribute("address");
                }
            }
        }

それまでの間、私は自分で答えを探しますが、どんな意見でも大歓迎です! :)

4

3 に答える 3

3

あなたのケースでは、 LINQ to XMLを使用する方が便利です。

 var addresses = XDocument.Load(AgentConfig.FileName)
                          .Descendants("endpoint")
                          .Select(x => (string)x.Attribute("address"))
                          .ToList();

結果は であるList<string>ため、インデックスによって単純に TextBoxes に割り当てることができます。

textBox1.Text = addresses[0];
textBox2.Text = addresses[1];
textBox3.Text = addresses[2];
于 2013-08-16T04:47:24.663 に答える
0

XML データを読み取って、最後の要素の値のみを表示できます。

独自の値を上書きしているため、この動作に直面しています。追加したい場合は、このように変更する必要があります

StringBuilder sb  = new StringBuilder();  //before while loop
StringBuilder sb1  = new StringBuilder();  //before while loop
XmlReader ReadFile = XmlReader.Create(AgentConfig.FileName);
    while (ReadFile.Read())
    {
        if ((ReadFile.NodeType == XmlNodeType.Element) && (ReadFile.Name == "endpoint"))
        {
            if (ReadFile.HasAttributes)
            {
                sb.Append(ReadFile.GetAttribute("address") + " ");
                sb1.Append(ReadFile.GetAttribute("address") + " ");

            }
        }
    }

//Then after your loop
textBox2.Text  = sb.ToString();
textBox3.Text  = sb1.ToString();
于 2013-08-16T04:47:41.430 に答える
0

アドレス属性をリストに追加し、最終的に以下のようにテキスト ボックスを設定できます。

List<string> addresses = new List<string>();
XmlReader ReadFile = XmlReader.Create(AgentConfig.FileName);
while (ReadFile.Read())
{
    if ((ReadFile.NodeType == XmlNodeType.Element) && (ReadFile.Name == "endpoint"))
    {
        if (ReadFile.HasAttributes)
        {
            addresses.Add(ReadFile.GetAttribute("address"));
        }
    }
}
if (addresses.Count >0)
{
    textBox1.Text = addresses[0];
}
if (addresses.Count >= 1)
{
    textBox2.Text = addresses[1];
}
于 2013-08-16T04:50:26.667 に答える