我正在嘗試使用以下代碼所表示的XML類型提供程序來處理Twitter推文。當使用LINQ XElement函數訪問tweet數據值時,該代碼工作正常,但是在使用由XMLProvider創建的類型時,它失敗並出現一個異常:「XML不匹配:預期只有一個'標題'child'。我知道命名空間沒有給出,但是,我不知道如果他們需要,他們將如何與提供者一起指定。F#TypeProvider「XMLProvider」給出System.Exception
// ...
open FSharp.Net
open FSharp.Data
let ns = "http://www.w3.org/2005/Atom"
// General helpers for XML
let xelem s (el: XContainer) = el.Element(XName.Get(s, ns))
// ...
let xvalue (el: XElement) = el.Value
let twitterUri = "http://search.twitter.com/search.atom?q=Windows8&rpp=100&lang=en"
type Tweets = XmlProvider<"SampleTweets.xml", Global=false>
let feed = Tweets.Load twitterUri
// title 0 & 1 produce correct values
let title0 = feed.XElement |> xelem "title" |> xvalue
let title1 = feed.XElement |> xelem "entry" |> xelem "title" |> xvalue
// title 2 produces: "XML mismatch: Expected exactly one 'title' child"
let title2 = feed.Title
let title3 = feed.GetEntries().[0].Title
是不是樣品XML不符合實際的XML問題?你可以在這裏包含兩個XML文件嗎? (或者,更好的是,它們的簡化版本仍然顯示這個問題。) – svick