2017-08-12 12 views
1

これは私の初めてのXMLファイルの作業です。私はC#もとても新しいです。テーマに基づいて異なる単語セットを含むXMLファイルを作成しました。私がしたいのは、特定のタグからのすべての単語だけを読み込むことです。しかし、私はエラーは表示されません。リストボックスに追加するコードをスキップするだけです。私のXMLファイルのサンプルは次のとおりです:XDocumentを使用して特定のタグをリストボックスに読み込む

<?xml version="1.0"?> 
<theme> 
     <fantasy> 
      <word> 
       <nn>wizzard</nn> 
       <nns>wizzards</nns> 
       <type>person</type> 
      </word> 
      <word> 
       <nn>wand</nn> 
       <nns>wands</nns> 
       <type>thing</type> 
      </word> 
      <word> 
       <vb>conjure</vb> 
       <vbg>conjuring</vbg> 
       <vbd>conjured</vbd> 
      </word> 
      <word> 
       <nnp>Merlin</nnp> 
       <type>person</type> 
      </word> 
    </fantasy> 
    <common> 
      <word> 
       <vb>run</vb> 
       <vbg>running</vbg> 
       <vbd>ran</vbd> 
      </word> 
      <word> 
       <nnp>Jeremy</nnp> 
       <type>person</type> 
      </word> 
      <word> 
       <nnp>Dylan</nnp> 
       <type>person</type> 
      </word> 
      <word> 
       <nnp>Darlene</nnp> 
       <type>person</type> 
      </word>  
      <word> 
       <nnp>Chelsea</nnp> 
       <type>person</type> 
      </word> 
      <word> 
       <jj>beautiful</jj> 
       <rb>beautifully</rb> 
      </word> 
      <word> 
       <jj>ugly</jj> 
      </word> 
      <word> 
       <jj>disgusting</jj> 
       <vbn>disgusted</vbn> 
       <rb>disgustingly</rb> 
       <nn>disgust</nn>     
      </word> 
     </common> 
</theme> 

私はすべてのタグを付けてリストボックスに入れたいと思います。ここに私が今まで持っているコードはあります:

public partial class Form1 : Form 
    { 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void menuOpen_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog open = new OpenFileDialog(); 
      open.ShowDialog(); 
      DocHandler.fileName = open.FileName; 
      DocHandler.doc = XDocument.Load(DocHandler.fileName); 
      txtText.Text = DocHandler.doc.ToString(); 

      GetElements(); 

     } 

     public void GetElements() 
     { 
      foreach (XElement element in DocHandler.doc.Root.Elements()) 
      { 
       if (element.Name.LocalName.Contains("word")) 
       { 
        foreach (XElement subelement in element.Elements()) 
        { 
         if (subelement.Name.LocalName.Contains("vb")) 
         { 
          listElements.Items.Add(subelement.Value.ToString()); 
         } 
        } 
       } 
      } 
     } 
    } 
    public class DocHandler 
    { 
     public static string fileName { get; set; } 
     public static XDocument doc; 

    } 

何か助けていただきありがとうございます!

答えて

0

あなたはレベル(ファンタジーと共通)をスキップしました。

しかし、すでにXDocumentを使用している場合は、LINQを利用しないのはなぜですか?

var words = DocHandler.doc.Descendants("vb").Select(element => element.Value); 
0

使用することもできXPath

var items = DocHandler.doc.Document.XPathSelectElements("//word/vb") 
          .Select(x => x.Value) 
          .ToList(); 
関連する問題