2012-01-24 48 views
2

当我尝试加载XML file时,出现错误:“根目录下的数据无效,第1行,第1位”。下面是相关的代码:加载XML文件时出错 - “根目录下的数据无效”

string line; 
StreamReader file = new StreamReader(filepath); 
while ((line = file.ReadLine()) != null) 
{ 
    XDocument doc = XDocument.Load("http://api.discogs.com/release/" + line); 
    //do processing 
} 

它的工作方式是,我打开其中包含版本号的列表StreamReader的一个文件,例如:

367315 
123456 
192837 

然后我想追加这些一个接一个地传递给url的其余部分,这样我就可以一次处理很多XML文件。但是,在加载XML时,我得到了提到的错误。我不知道是什么原因造成的。它是格式良好还是编码?我希望任何人都可以帮助我!

+0

您尝试打开的XML文件无效。如果你能以某种方式拉它并发布它,我们可以告诉你更多。 – Tim

+1

是文件中的所有数字列表吗? – 2012-01-24 22:52:30

+0

我去了链接并下载了文件 - 看起来像是JSON格式。你认为它应该是XML吗? – Tim

回答

4

默认情况下,该网站返回的Json ......让它XML ....

  string text; 
      using (WebClient client = new WebClient()) 
      { 
       client.Headers["Accept"] = "application/xml"; 
       text = client.DownloadString(@"http://api.discogs.com/release/" + line); 
      } 

       var elements = XElement.Parse(text); 
       var artists= elements.Descendants("artist") 
        .Select(e =>e.Element("role").Value 
          + " " 
          + e.Element("name").Value) 
        .ToList(); 

       artists.ForEach(Console.WriteLine); 
1

您链接的文件有

{"resp": {"status": true, "release": {"styles": ["Alternative Rock", "Pop 
Rock"], "videos": [{"duration": 351, "description": "Coldplay a Rush of Bloo 
d to the Head", "embed": true, "uri": "http://www.youtube.com/watch? 
v=eoyyr1SFPCY", "title": "Coldplay a Rush of Blood to the Head"}], "series": 
[], "labels": [{"name": "Parlophone", "entity_type": "1", "catno": "7243 5 40504 2 
8", "resource_url": "http://api.discogs.com/labels/2294", "id": 
2294, "entity_type_name": "Label"}, 
{"name": "Parlophone", "entity_type": "1", "catno": "540 
5042", "resource_url": "http://api.discogs.com/labels/2294", "id": etc etc etc 

所以它的一个JSON文件内容..使用JSONDeserializer来获取数据。

+0

不,看我的回答:)它可以返回多种格式 –

+0

不知道我们可以将标题更改为我们想要的文件。太精彩了。 :) –

+0

相当多的后端可以提供多种格式....节省了很多麻烦! –

0

返回的XML是一个片段。它没有根元素。您不能将XmlDocument.Load与片段一起使用。

This post应该指出你在正确的方向。

编辑:他的链接返回XML。这是我从小提琴手中抽取的:

HTTP/1.1 200 OK 
Reproxy-Status: yes 
Content-Type: application/xml; charset=utf-8 
Date: Wed, 25 Jan 2012 23:02:42 GMT 
Server: lighttpd 
Content-Length: 10574 
Proxy-Connection: Keep-Alive 
Connection: Keep-Alive 
Age: 0 

<resp stat="ok" version="2.0"><release id="367315" status="Accepted"><images><image height="296" type="secondary" uri="http://api.discogs.com/image/R-367315-1169408807.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1169408807.jpeg" width="600" /><image height="600" type="primary" uri="http://api.discogs.com/image/R-367315-1284410494.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410494.jpeg" width="600" /><image height="463" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410524.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410524.jpeg" width="600" /><image height="591" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410539.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410539.jpeg" width="598" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410555.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410555.jpeg" width="600" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410571.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410571.jpeg" width="600" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410583.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410583.jpeg" width="600" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410592.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410592.jpeg" width="600" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410604.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410604.jpeg" width="600" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410613.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410613.jpeg" width="600" /><image height="600" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410625.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410625.jpeg" width="600" /><image height="463" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410632.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410632.jpeg" width="600" /><image height="152" type="secondary" uri="http://api.discogs.com/image/R-367315-1284410641.jpeg" uri150="http://api.discogs.com/image/R-150-367315-1284410641.jpeg" width="599" /></images><artists><artist><id>29735</id><name>Coldplay</name><anv /><join /><role /><tracks /></artist></artists><title>A Rush Of Blood To The Head</title><labels><label catno="7243 5 40504 2 8" name="Parlophone" /><label catno="540 5042" name="Parlophone" /></labels><extraartists><artist><id>1840230</id><name>Dan Keeling (2)</name><anv /><join /><role>A&amp;r</role><tracks /></artist><artist><id>257846</id><name>Audrey Riley</name><anv /><join /><role>Arranged By [String Arrangements]</role><tracks /></artist><artist><id>29735</id><name>Coldplay</name><anv /><join /><role>Arranged By [String Arrangements]</role><tracks /></artist><artist><id>471548</id><name>Blue Source</name><anv /><join /><role>Art Direction</role><tracks /></artist><artist><id>29735</id><name>Coldplay</name><anv /><join /><role>Art Direction</role><tracks /></artist><artist><id>2246115</id><name>Sølve Sundsbø</name><anv /><join /><role>Artwork [Cover Art]</role><tracks /></artist><artist><id>306452</id><name>Rik Simpson</name><anv /><join /><role>Engineer [Additional Engineering By]</role><tracks /></artist><artist><id>351549</id><name>Andrea Wright (2)</name><anv /><join /><role>Engineer [Assisted By]</role><tracks /></artist><artist><id>407167</id><name>Ben Thackeray</name><anv /><join /><role>Engineer [Assisted By]</role><tracks /></artist><artist><id>446281</id><name>Jon Bailey</name><anv /><join /><role>Engineer [Assisted By]</role><tracks /></artist><artist><id>1150797</id><name>Jon Withnall</name><anv>Jon Withnal</anv><join /><role>Engineer [Assisted By]</role><tracks /></artist><artist><id>251683</id><name>Ken Nelson</name><anv>Ken</anv><join /><role>Engineer [Engineered By]</role><tracks /></artist><artist><id>974611</id><name>Dave Holmes (7)</name><anv /><join /><role>Management</role><tracks /></artist><artist><id>1840237</id><name>Estelle Wilkinson</name><anv /><join /><role>Management</role><tracks /></artist><artist><id>1886107</id><name>Nettwerk Management</name><anv>Nettwerk</anv><join /><role>Management</role><tracks /></artist><artist><id>335003</id><name>George Marino</name><anv /><join /><role>Mastered By</role><tracks /></artist><artist><id>29735</id><name>Coldplay</name><anv /><join /><role>Mixed By</role><tracks /></artist><artist><id>113799</id><name>Danton Supple</name><anv /><join /><role>Mixed By</role><tracks>2, 3, 6, 8, 10</tracks></artist><artist><id>251683</id><name>Ken Nelson</name><anv /><join /><role>Mixed By</role><tracks /></artist><artist><id>251682</id><name>Mark Phythian</name><anv /><join /><role>Mixed By</role><tracks /></artist><artist><id>42610</id><name>Chris Martin</name><anv /><join /><role>Performer [Coldplay]</role><tracks /></artist><artist><id>530745</id><name>Guy Berryman</name><anv /><join /><role>Performer [Coldplay]</role><tracks /></artist><artist><id>530747</id><name>Jon Buckland</name><anv /><join /><role>Performer [Coldplay]</role><tracks /></artist><artist><id>530749</id><name>Phil Harvey</name><anv /><join /><role>Performer [Coldplay]</role><tracks /></artist><artist><id>530746</id><name>Will Champion</name><anv /><join /><role>Performer [Coldplay]</role><tracks /></artist><artist><id>2265953</id><name>Tom Sheehan (3)</name><anv /><join /><role>Photography By</role><tracks /></artist><artist><id>2247420</id><name>Zed Nelson</name><anv /><join /><role>Photography By</role><tracks /></artist><artist><id>29735</id><name>Coldplay</name><anv /><join /><role>Producer</role><tracks /></artist><artist><id>251683</id><name>Ken Nelson</name><anv /><join /><role>Producer</role><tracks /></artist><artist><id>251682</id><name>Mark Phythian</name><anv /><join /><role>Producer [Additional Production By]</role><tracks /></artist><artist><id>251683</id><name>Ken Nelson</name><anv>Ken</anv><join /><role>Recorded By</role><tracks /></artist><artist><id>251682</id><name>Mark Phythian</name><anv /><join /><role>Recorded By [With]</role><tracks /></artist><artist><id>42610</id><name>Chris Martin</name><anv>Martin</anv><join /><role>Songwriter</role><tracks /></artist><artist><id>530745</id><name>Guy Berryman</name><anv>Berryman</anv><join /><role>Songwriter</role><tracks /></artist><artist><id>530747</id><name>Jon Buckland</name><anv>Buckland</anv><join /><role>Songwriter</role><tracks /></artist><artist><id>530746</id><name>Will Champion</name><anv>Champion</anv><join /><role>Songwriter</role><tracks /></artist><artist><id>400611</id><name>Ann Lines</name><anv /><join /><role>Strings</role><tracks /></artist><artist><id>257846</id><name>Audrey Riley</name><anv /><join /><role>Strings</role><tracks /></artist><artist><id>274873</id><name>Chris Tombling</name><anv /><join /><role>Strings</role><tracks /></artist><artist><id>400609</id><name>Laura Melhuish</name><anv>Laura Melhewish</anv><join /><role>Strings</role><tracks /></artist><artist><id>303064</id><name>Leo Payne</name><anv /><join /><role>Strings</role><tracks /></artist><artist><id>273998</id><name>Peter Lale</name><anv /><join /><role>Strings</role><tracks /></artist><artist><id>400613</id><name>Richard George</name><anv /><join /><role>Strings</role><tracks /></artist><artist><id>273997</id><name>Sue Dench</name><anv>Susan Dench</anv><join /><role>Strings</role><tracks /></artist><artist><id>0</id><name>Berryman/Buckland/Champion/Martin</name><anv /><join /><role>Written By</role><tracks /></artist></extraartists><formats><format name="CD" qty="1"><descriptions><description>Album</description></descriptions></format></formats><genres><genre>Rock</genre></genres><styles><style>Alternative Rock</style><style>Pop Rock</style></styles><country>UK &amp; Europe</country><released>2002-08-26</released><notes>Recorded at Studio 2 Mayfair, Studio 3 Parr Street and Studio 1 Air between September 2001 and May 2002. 
Mastered at Sterling Sound. 

The Scientist is Dan. 

℗ 2002 The copyright of this sound is owned by EMI Records Ltd. © 2002 EMI Records Ltd. 
[On back cover:] Published by BMG Music Publishing Ltd. Printed in the EU. Marketed and distributed by EMI. 
[On CD label:] Made in EU. 
This CD is Carbon Neutral courtesy of Future Forests 
</notes><master_id>3354</master_id><data_quality>Correct</data_quality><tracklist><track><position>1</position><title>Politik</title><duration>5:18</duration></track><track><position>2</position><title>In My Place</title><duration>3:48</duration></track><track><position>3</position><title>God Put A Smile Upon Your Face</title><duration>4:57</duration></track><track><position>4</position><title>The Scientist</title><duration>5:09</duration></track><track><position>5</position><title>Clocks</title><duration>5:07</duration></track><track><position>6</position><title>Daylight</title><duration>5:27</duration></track><track><position>7</position><title>Green Eyes</title><duration>3:43</duration></track><track><position>8</position><title>Warning Sign</title><duration>5:31</duration></track><track><position>9</position><title>A Whisper</title><duration>3:58</duration></track><track><position>10</position><title>A Rush Of Blood To The Head</title><duration>5:51</duration></track><track><position>11</position><title>Amsterdam</title><duration>5:19</duration></track></tracklist><identifiers><identifier description="Text" type="Barcode" value="7 24354 05042 8" /><identifier description="Scanned" type="Barcode" value="724354050428" /><identifier type="Rights Society" value="BEL BIEM" /><identifier description="Distribution Code, France" type="Other" value="PM 520" /><identifier type="Label Code" value="LC0299" /><identifier description="Variant 1" type="Matrix/Runout" value="5405042" /><identifier description="Variant 2" type="Matrix/Runout" value="5405042 A838865-01 manufactured by optimal media production" /><identifier description="Mould SID Code, Variant 2" type="Other" value="IFPI 9712" /><identifier description="Mastering SID Code, Variant 2" type="Other" value="IFPI L573" /></identifiers><videos><video duration="351" embed="true" src="http://www.youtube.com/watch?v=eoyyr1SFPCY"><title>Coldplay a Rush of Blood to the Head</title><description>Coldplay a Rush of Blood to the Head</description></video></videos></release></resp> 

这是一个xml片段。所以,而不是使用XDocument.Load(对不起,我以前的响应与XmlDocument.Load混淆),您可以使用XElement.Load。请参阅this wonderful answer

+0

他试图使用XDocument,而不是XmlDocument - 两种不同的野兽;并且数据似乎默认为JSON,而不是XML。 – Tim

相关问题