【问题标题】:Read xml file in c# wpf [closed]在c#wpf中读取xml文件[关闭]
【发布时间】:2017-04-10 09:58:08
【问题描述】:

我有一个想要在文本文件中读取的 xml 文件。它必须以文本(而不是代码本身)的形式发布。我现在拥有的:(在打开 xml 文件的按钮中)。我现在可以打开文件并将其放入文本框中,但正如预期的那样,它只是显示为代码,而不是显示我想查看的计算。

XmlDocument xmldoc = new XmlDocument();
        XmlNodeList xmlnode;
        int i = 0;
        string str = null;
        OpenFileDialog openFileDialog = new OpenFileDialog();
        if (openFileDialog.ShowDialog() == true)
            tbBerekeningen.Text = File.ReadAllText(openFileDialog.FileName);
        xmldoc.Load(tbBerekeningen.Text);
        xmlnode = xmldoc.GetElementsByTagName("Product");
        for (i = 0; i <= xmlnode.Count - 1; i++)
        {
            xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
            str = xmlnode[i].ChildNodes.Item(0).InnerText.Trim() + "  " + xmlnode[i].ChildNodes.Item(1).InnerText.Trim() + "  " + xmlnode[i].ChildNodes.Item(2).InnerText.Trim();
            MessageBox.Show(str);

xml 文件与任何其他 xml 文件一样:

元素是

<Som>
 <Getal1>1</Getal1>
  <Operator>+</Operator>
 <Getal2>34</Getal2>
</Som>

【问题讨论】:

  • xmldoc.GetElementsByTagName("Product")。 XML 文件是否有一个名为 Product 的元素? (您之前发布的 xml 中不包含此元素)
  • 您需要更好地解释问题所在。我们不知道您需要什么计算。
  • @Johan 我编辑了帖子,是的,我没有。但即使我输入“Som”,它仍然会给出整个 xml 代码
  • @jdweng 查看编辑> xml 代码

标签: c# xml visual-studio


【解决方案1】:

试试下面的代码:

XmlDocument xmldoc = new XmlDocument();
        XmlNodeList xmlnode;
        int i = 0;
        string str = null;
        string result = string.Empty;
        List<int> Value1 = new List<int>();
        List<int> Value2 = new List<int>();
        List<string> Operator = new List<string>();
        OpenFileDialog openFileDialog = new OpenFileDialog();
        if (openFileDialog.ShowDialog() == true)
        {

            xmldoc.Load(openFileDialog.FileName);
            xmlnode = xmldoc.GetElementsByTagName("Som");
            for (i = 0; i <= xmlnode.Count - 1; i++)
            {
                xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                str = str + xmlnode[i].ChildNodes.Item(0).InnerText.Trim() + "  " + xmlnode[i].ChildNodes.Item(1).InnerText.Trim() + "  " + xmlnode[i].ChildNodes.Item(2).InnerText.Trim() + System.Environment.NewLine;
                Value1.Add(int.Parse(xmlnode[i].ChildNodes.Item(0).InnerText.Trim()));
                Value2.Add(int.Parse(xmlnode[i].ChildNodes.Item(2).InnerText.Trim()));
                Operator.Add(xmlnode[i].ChildNodes.Item(1).InnerText.Trim());
            }
            tbBerekeningen.Text = str;
        }
        for (int j = 0; j < Value1.Count; j++)
        {
            if (Operator[j] == "+")
            {
                result = result + Value1[j] + Value2[j] + System.Environment.NewLine;
            }

            //add if else block or switch cases for all the operators.
            //e.g if (Operator[j] == "-")

        }

        tbBerekeningen.Text = result; 

您可以在 MessageBox 中查看 for 循环的所有计算。

【讨论】:

  • 嗯,它可以工作,所以谢谢,但是有什么方法可以在“tbCalculations”中显示计算(不在消息框中)?
  • 编辑了我的代码示例。现在它将在“tbCalculations”中显示所有计算。
  • 太棒了!正如预期的那样!只是一个额外的:我怎样才能让它计算数字?
  • @user6840583 查看编辑后的示例,它将在“tbCalculations”中显示计算
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多