2013-01-09 28 views
8

ここでスタックオーバーフローでいくつかのスレッドを調べましたが、答えが見つかりません。C#XMLファイルの解析

<entry id="1" type="a"> 
    <name>string 1</name> 
    <description>any description</description> 
</entry> 
<entry id="2" type="b"> 
    <name>string 2</name> 
    <description>any description #2</description> 
</entry> 

私はすべての「エントリー」のタグを選択して、IDを返す、タイプ、エントリーの内側の名前と説明タグする必要があります。私は、次のようなXMLファイルを設定しています。 C#でどうすればいいですか?

おかげで、HtmlAgilityPack図書館で

+0

確かにXMLのように見えます...そのように、私はXDocumentとXML用のLINQ拡張を使用します。追加パワーが必要な場合は、XPathを使用することもできます(場合によっては複雑さを犠牲にして)。 http://stackoverflow.com/questions/566167/query-an-xdocument-for-elements-by-name-at-any-depth –

+0

http://msdn.microsoft.com/en-us/library/systemを参照してください。 .xml.linq.xdocument.descendants.aspx(LinqからDescendantsを使ったXMlは良い出発点です)。 –

答えて

13

xmlファイルには1つのルートノードが必要です。ここでXMLへのLINQで解析された:

var xdoc = XDocument.Load(path_to_xml); 
var entries = from e in xdoc.Descendants("entry") 
       select new { 
       Id = (int)e.Attribute("id"), 
       Type = (string)e.Attribute("type"), 
       Name = (string)e.Element("name"), 
       Description = (string)e.Element("description") 
       }; 

クエリ(プロパティID、タイプ、名前、および説明を持つ)各入力要素に対応する匿名オブジェクトの配列を返します。

+0

@ user1425433 [XML文書にはルート要素が必要です](http://www.w3schools.com/xml/xml_syntax.asp)、ルートレベルに2つの* entry *要素があります –

1

ルック。これを使用すると、LINQまたはXPathを使用してHTMLを解析できます。

関連する問題