どこでも答えを探しましたが、これまでのところ私の質問に答えるものはありません。私が作成しているアプリケーションでは、Bukkit.org から最新の XML アーティファクトを取得する必要があります。ここで、XML アーティファクトを (ブラウザーを介して) 手動で保存し、それをプログラムにロードすると、適切に機能し、期待どおりの形式の XML ファイルが得られます。
ただし、WebClient を使用してファイルにアクセスすると、Webclient がダウンロードするファイルが XML 形式ではないため、問題が発生します。以下にテストケースを入れました。
static void manualLoad()
{
//local copy
XDocument doc = XDocument.Load("artifacts.xml");
var lol = doc.Descendants("build_number");
foreach (XElement e in lol)
{
Console.WriteLine(e.Value); //correct output
}
}
static void onlineLoad()
{
WebClient client = new WebClient();
//save to local project folder
client.DownloadFile(new Uri("http://dl.bukkit.org/api/1.0/downloads/projects/bukkit/artifacts/")
, "C:\\...\\XMLTest\\XMLTest\\bin\\Debug\\lol.xml");
XDocument doc = XDocument.Load("lol.xml"); //error thrown!
}
static void Main(string[] args)
{
manualLoad(); //works!
onlineLoad(); //throws XMLexception: Data at root level is invalid.
Console.ReadKey();
}
アクセスしようとしている XML アーティファクトは次のとおりです: Bukkit.org XML Artifact