2017-07-05 5 views
-1

Wie können Sie char in XElement.value aus einer XML-Datei in WPF konvertieren? Ich habe die Baumelemente gedruckt, aber nicht ihre Werte; Ich habe das aus 'char' nicht konvertieren "System.Xml.Linq.XElement ArgumentWie konvertiert man char zu XElement?

Danke

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

+0

Willkommen bei Stack Overflow. Anweisungen zum Verfassen einer guten Frage finden Sie unter [Wie Sie fragen] (https://stackoverflow.com/help/how-to-ask). So wie es aussieht, ist es schwer zu verstehen, wonach Sie fragen. Bitte machen Sie auch keine Links zu Bildern von Code oder Fehlern. Kopieren Sie stattdessen diese Informationen und fügen Sie sie in Ihre Frage ein. Dies ist natürlich ein allgemeiner Vorschlag. Sie sollten immer sicherstellen, dass jeder von Ihnen gepostete Code ein [minimales, vollständiges und überprüfbares] (https://stackoverflow.com/help/mcve) Beispiel für das Problem darstellt, vor dem Sie stehen. – stybl

+0

Siehe Beitrag: https://stackoverflow.com/questions/28976601/recursion-parsing-xml-file-with-attributes-into-treeview-c-sharp – jdweng

Antwort

1

Die Value Eigenschaft gibt den Textinhalt des Elements. Sie möchten die untergeordneten Elemente des Elements durchlaufen:

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); 
    } 
} 
+0

danke! es funktionierte – batbaqna

Verwandte Themen