【发布时间】: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 已经提到了一个很好的例子。