如何在文本框中显示 xmlnodes

Posted

技术标签:

【中文标题】如何在文本框中显示 xmlnodes【英文标题】:How to display xmlnodes in textbox 【发布时间】: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 已经提到了一个很好的例子。 【参考方案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));

【讨论】:

以上是关于如何在文本框中显示 xmlnodes的主要内容,如果未能解决你的问题,请参考以下文章

用java如何实现 在文本框中显示图片

如何从菜单栏中选择在文本框中显示特定文本

如何在 C# Winforms 程序的文本框中突出显示文本?

如何在没有焦点的情况下突出显示/选择 wpf 文本框中的文本?

VB如何把文件内容显示在文本框中?

如何在文本框中显示全局 [静态] 变量的内容?