【问题标题】:How do you convert char to XElement in WPF C#?如何在 WPF C# 中将 char 转换为 XElement?
【发布时间】:2017-07-05 09:11:45
【问题描述】:

你如何将 char 转换为 XElement.value 从 WPF 中的 XML 文件?我已经打印了树元素,但没有打印它们的值;我得到无法从 'char' 转换为 'System.Xml.Linq.XElement' 参数。 也许我在迭代错误的类型?

谢谢

    public partial class MainWindow : Window
   {
    string file1 = System.IO.File.ReadAllText(@"H:\MpxWpfComponents.strings.xsd");
    string file2 = System.IO.File.ReadAllText(@"H:\MpxWpfComponents.bg.strings.xml");
    string file3 = System.IO.File.ReadAllText(@"H:\MpxWpfComponents.fr.strings.xml");

    public MainWindow()
    {
        InitializeComponent();
    }

    private void btnOpenFile_Click1(object sender, RoutedEventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "XML files (*.xml)|*.xml|All files (*.*)|*.*";
        openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        if (openFileDialog.ShowDialog() == true)
        {
            foreach (string filename in openFileDialog.FileNames)
                listXML.Items.Add(Path.GetFileName(filename));
        }
        var xmlDoc = XDocument.Parse(file2);
        BuildTree(treeView.Items, xmlDoc.Elements().First());           
    }

    private void BuildTree(ItemCollection itemCollection, XElement xElement)
    {
        var item = new TreeViewItem() { Header = xElement.Name.LocalName };
        itemCollection.Add(item);
        foreach (var xElem in xElement.Elements())
        {
            BuildTree(item.Items, xElem);
        }

        item = new TreeViewItem() { Header = xElement.Value };
        itemCollection.Add(item);

        foreach (var xElem in xElement.Value)
        {
            BuildTree(item.Items, xElem);
        }
    }

CS code

XAML code

【问题讨论】:

  • 欢迎来到 Stack Overflow。请参阅How to Ask 了解如何编写好问题的说明。就目前而言,很难准确理解您要问的内容。此外,请不要发布指向代码或错误图像的链接。相反,将所述信息复制并粘贴到您的问题中。这当然是一个普遍的建议。您应该始终确保您发布的任何和所有代码都构成您所面临问题的Minimal, Complete, and Verifiable 示例。

标签: c# xml wpf treeview


【解决方案1】:

Value 属性返回元素的文本内容。你想遍历元素的子元素:

private void BuildTree(ItemCollection itemCollection, XElement xElement)
{
    var item = new TreeViewItem() { Header = xElement.Name.LocalName };
    itemCollection.Add(item);
    foreach (var xElem in xElement.Elements())
    {
        BuildTree(item.Items, xElem);
    }

    item = new TreeViewItem() { Header = xElement.Value };
    itemCollection.Add(item);

    foreach (var xElem in xElement.Elements()) //<---
    {
        BuildTree(item.Items, xElem);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2019-11-11
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2021-11-30
    相关资源
    最近更新 更多