我将XmlProvider附加到看似有效的xml(在IE中显示,由W3C工具验证)
当我编写程序时,所有类型检查都可以编译。 但是在运行时我遇到以下错误:
Data at the root level is invalid. Line 1, position 1.
当我访问
时 let posts = (TyPosts.Parse lastposts).GetEntries()
其中entry是节点名称。
=>我应该在哪里放置一个断点?
我只能设法打破TP构建,而不是实际的数据访问!
要重现初始pb,这是一个脚本。唯一的修改应该是2个第一个dll。
#r @"Z:\clones\FSharp.Data\bin\v40\FSharp.Data.dll"
#r @"Z:\clones\FSharp.Data\bin\v40\FSharp.Data.DesignTime.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.Http.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.dll"
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.Linq.dll"
open System
open System.Net
open FSharp.Data
open System.IO;
open System.Text;
open System.Xml;
[<Literal>]
let lastposts = "lastposts.xml"
let phase0 () =
let fetch (url : string, auth) =
use client = new WebClient()
client.Headers.Add("user-agent", @"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US")
client.DownloadString url
let write(filename, content:string) =
use f= new StreamWriter(filename, false)
f.Write(content)
let posts () = fetch(@"http://squarism.com/feed/atom/", false)
write( __SOURCE_DIRECTORY__ + "/"+ lastposts, posts())
phase0()
[<Literal>]
let res = __SOURCE_DIRECTORY__
type TyPosts = XmlProvider<lastposts,ResolutionFolder=res>
let posts = (TyPosts.Parse lastposts).GetEntries() // <-- TCHETCHENIA HERE !!
答案 0 :(得分:4)
您使用的是什么版本的FSharp.Data?我只是用1.1.4尝试了这个并且它运行良好:
let feed = XmlProvider<"http://squarism.com/feed/atom/">.GetSample()
let entries = feed.GetEntries()
最近修复了Xml命名空间的问题(请参阅SO question)
在任何情况下,断点的位置都是here(在FSharp.Data.dll
汇编中,而不是FSharp.Data.DesignTime.dll
汇编)
如果1.1.4不起作用,请在GitHub上提交问题