2

こんにちは、含まれているすべての質問を徹底的に調べましたがXDocument、それらはすべて私が探しているもの(ほとんどの名前空間の問題)に対する答えを与えていますが、それは私にとってはうまくいかないようです.

私が抱えている問題は、属性であろうと要素であろうと、値を選択できないことです。

このXML の使用

スピーカーのフルネームを取得しようとしています。

    public void GetEvent()
    {
        var xdocument = XDocument.Load(@"Shared\techdays2013.xml");
        XNamespace xmlns = "http://www.w3.org/2001/XMLSchema-instance";

        var data = from c in xdocument.Descendants(xmlns + "speaker")
                   select c.Element(xmlns + "fullname").Value;
    }
4

3 に答える 3

2

linq ステートメントで名前空間宣言を省略できます。

public void GetEvent()
{
    var xdocument = XDocument.Load(@"Shared\techdays2013.xml");
    //XNamespace xmlns = "http://www.w3.org/2001/XMLSchema-instance";

    var data = from c in xdocument.Descendants("speaker")
               select c.Element("fullname").Value;
}
于 2013-01-29T11:33:01.497 に答える
1

1)名前空間を削除する必要があります

2)より正確にクエリを実行する必要があります。<speaker>内部のすべての要素に<speakers>はフルネームがありますが、次のセクションで私は見つけました<speaker id="94" />

簡単な修正(おそらく最高ではない):

//untested
var data = from c in xdocument.Root.Descendants("speakers").Descendants("speaker")
          select c.Element("fullname").Value;

パスをより正確に指定することをお勧めします。

xdocument.Element("details").Element("tracks").Element("speakers").
于 2013-01-29T11:35:24.817 に答える
1

WebClientファイルにローカルで直接アクセスできるため、省略できます。私のマシンであなたのファイルを処理する方法を示しているだけです。

void Main()
{
    string p = @"http://events.feed.comportal.be/agenda.aspx?event=TechDays&year=2013&speakerlist=c%7CExperts";
    using (var client = new WebClient())
    {
        string str = client.DownloadString(p);
        var xml = XDocument.Parse(str);

        var result = xml.Descendants("speaker")
                        .Select(speaker => GetNameOrDefault(speaker));


        //LinqPad specific call        
        result.Dump();
    }
}
public static string GetNameOrDefault(XElement element)
{
    var name = element.Element("fullname");
    return name != null ? name.Value : "no name";
}

プリント:

Bart De Smet 
Daniel Pearson 
Scott Schnoll 
Ilse Van Criekinge 
John Craddock 
Corey Hynes 
Bryon Surace 
Jeff Prosise 
于 2013-01-29T11:38:09.253 に答える