簡體   English   中英

linq到xml,讀取xml文件

[英]linq to xml, read xml file

我正在努力閱讀linq to xml中的這個xml文件。 有人可以在這里幫我嗎。 我需要閱讀每個曲目信息。

<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">
<title>Some title here</title>
<creator>Some creater</creator>
<info>somesite.com</info>
    <trackList>
        <track>
            <title>Title 1</title>
            <creator>Creater 1</creator>
            <location>location 1</location>
        </track>
        <track>
            <title>Title 2</title>
            <creator>Creater 2</creator>
            <location>location 2</location>
        </track>
    </trackList>
</playlist>

這就是我想要做的。

XElement xelement1 = XElement.Load(@"pathtoxmlfile\my.xml");

IEnumerable<XElement> tracks= xelement1.Elements();
// Read the entire XML
foreach (var track in tracks.Descendants("track"))
{
    Console.WriteLine(track );
    Console.ReadLine();
}

我正在使用C#。

謝謝Parminder

您忘記包括名稱空間名稱,請進行以下更改:

    XNamespace defNs = "http://xspf.org/ns/0/";

    foreach (var track in tracks.Descendants(defNs + "track"))
XElement tracks = XElement.Load(@"pathtoxmlfile\my.xml");  
foreach (var track in tracks.Descendants("track"))
{
  Console.WriteLine((string)track.Element("title"));
  Console.WriteLine((string)track.Element("creator"));
  Console.WriteLine((string)track.Element("location"));
}
  1. 為什么將文檔加載到XElement而不是XDocument

  2. 您必須在查詢中使用XNamespace實例,因為您的文檔使用默認的名稱空間xmlns="http://xspf.org/ns/0/"

     var ns = XNamespace.Get("http://xspf.org/ns/0/"); 
  3. 您可以使用LINQ查詢來獲取從XML文檔提取的數據的集合。 然后,您可以遍歷該集合並執行所需的任何操作。

     var tracks = (from t in xDoc.Root.Element(ns + "trackList").Elements(ns + "track") select new { Title = (string)t.Element(ns + "title"), Creator = (string)t.Element(ns + "creator"), Location = (string)t.Element(ns + "location") }).ToList(); 

    tracks將是一個List<T> ,其中T是具有3個string屬性的匿名類型: TitleCreatorLocation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM