c# - 使用 C#,如何逐行显示 XML?

标签 c# xml listbox linq-to-xml

你好,

例如我有这个 xml:

<books>
  <book1 name="Cosmic">
    <attribute value="good"/>
  </book1>
</books>  

如何在列表框控件中逐行显示它,在这种情况下最终结果将是一个包含 5 行的列表框?

此时此刻,我正在使用 LINQ to XML 来处理 XML,如下所示:

 foreach (XElement element in document.DescendantNodes())
   {
     MyListBox.Items.Add(element.ToString());
   }

但最终结果将每个 xml 节点放在一个列表框项中(包括子节点)。

有谁知道如何将 xml 逐行放入列表框项目中?

谢谢。

杰夫

最佳答案

一个简单的解决方案将使用如下递归函数:

public void FillListBox(ListBox listBox, XElement xml)
{
    listBox.Items.Add("<" + xml.Name + ">");
    foreach (XNode node in xml.Nodes())
    {
        if (node is XElement)
            // sub-tag
            FillListBox(listBox, (XElement) node);
        else
            // piece of text
            listBox.Items.Add(node.ToString());
    }
    listBox.Items.Add("</" + xml.Name + ">");
}

当然,这个只会打印标签名称(例如 <book1> 在你的例子中)而不是属性( name="Cosmic" 等)。我相信你可以自己把它们放进去。

关于c# - 使用 C#,如何逐行显示 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194960/

相关文章:

c# - 如何覆盖 DataContext.SubmitChanges()?

c# - 如何通过反射代码(c#)设置可空类型?

c# - 为什么 ISO-8601 规范在涉及小数时似乎被普遍忽略?

java - NetBeans 7.3 自由格式 Java 项目 - 如何将 3d 方库添加到 project.xml?

c# - 右侧模糊的 WPF 列表框边框

excel - 如何修复 Excel 列表框无法将最后一个元素滚动到 View 中的问题

c# - Powershell 自定义 cmdlet 在标准方法的实现之外调用 WriteVerbose

c# - 如何比较两个 XML 文件的差异?

php - PHP套接字写XML并保持生命

c# - MenuItem.IsEnabled 绑定(bind)到是否在列表框中选择了某些内容,但它不会更新