【问题标题】:How to display xmlnodes in textbox如何在文本框中显示 xmlnodes
【发布时间】:2021-02-28 18:52:27
【问题描述】:

我很好奇如何在文本框中显示特定节点的内容

我的 XML 文件:

<?xml version="1.0"?>
<root>
  <debug_mode>true</debug_mode>
  <filter>
    <filter_item>1158</filter_item>
    <filter_item>1159</filter_item>
    <filter_item>1160</filter_item>
  </filter>
</root>

我的cs文件:

 public MainWindow()
        {
            InitializeComponent();

            XmlDocument Xdoc = new XmlDocument();

            Xdoc.Load(xmldoc);
            XmlElement el = (XmlElement)Xdoc.SelectSingleNode("root/filter/filter_item");         
            tbOrderDisplay.Text = el.InnerText;

        }

遗憾的是,Innertext 在我的文本框中没有显示任何内容,有没有办法应用 foreach 来显示每个项目? (我还在学习如何使用 c#)

【问题讨论】:

  • IMO,您最好以System.Xml.Linq 开头,而不是System.Xml。参见例如XDocument or XmlDocument.
  • 但是如何挑选一个节点呢?因为我想在我的文本框中显示子节点的内容,并且使用 xdocument 没有选择单个节点的选项
  • 阅读文档。像 Enumerable.First 或 FirstOrDefault 这样的东西应该可以工作。
  • 所以我通读了文档,但主要是解释当我包含的 xml 文件已经存在时如何创建文档。我唯一要做的就是获取节点值并将它们显示在我的文本框中。现在我发现你可以通过使用 root.element 引用值来获取它们,但是我最终如何将它链接到我的 textbox.text?
  • tbOrderDisplay.Text = string.Join(",", Xdoc.SelectNodes("root/filter/filter_item").Cast&lt;XmlNode&gt;().Select(x =&gt; x.InnerText.Trim())); 这行得通,您可以根据需要更改分隔符,我正要添加答案,但 Clemens 已经提到了一个很好的例子。

标签: c# xml wpf


【解决方案1】:

这样的事情应该可以工作:

var root = XDocument.Load(xmldoc).Root;
var filter = root.Element("filter");

foreach (var filterItem in filter.Descendants("filter_item"))
{
    tbOrderDisplay.Text += filterItem.Value + "\n";
}

或更短:

tbOrderDisplay.Text = string.Join("\n",
    filter.Descendants("filter_item").Select(f => f.Value));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多