如何在文本框中显示 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<XmlNode>().Select(x => 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# Winforms 程序的文本框中突出显示文本?