2012-02-24 9 views
0

EDIT:私の間違いは私が文字列をエンコードするurlではないことです。つまり、xdoc.Load(Server.UrlEncode( "website.com")) ;ドキュメントタイプのないURLからXMLを解析する:エラーとは何ですか?

C#ASP.NETでは、URLからXMLを取得しています。

<html> 
    <head></head> 
    <body> 
    <product> 
     <course> 
     </course> 
    </product> 
    ... more data 
    </body> 
</html> 

だから、その本当にHTMLまたはせいぜいない有効なXML:XMLはそのような形式です。私はインターネット上のサーバーからこのxmlをロードするときにエラーが発生します。 XMLは(HTML)有効ではないため

は、構文解析/ロードが失敗している、または私が代わりにローカルファイルのURLからXMLを取得していますので、それが失敗していますか?

どうすればこのファイルを正常に解析できますか? XMLドキュメントタイプを追加する必要がありますか?C#HTMLパーサーを使用しますか?

エラーは次のとおりです。

// ERROR: Data at the root level is invalid. Line 1, position 1. 

    public string getProductXML() 
    { 
     XmlDocument xdoc = new XmlDocument(); 
     xdoc.Load("http://www.website.com/test.aspx?a=1&b=2"); //ERROR HERE: Data at the root level is invalid. Line 1, position 1. 
     // NOTE www.website.com is a different server to where this code is executing 
     XmlNodeList xNodelst = xdoc.DocumentElement.SelectNodes("group"); 


    } 
+0

正しいXMLを取得してもよろしいですか?手動でダウンロードしてみてください。 'WebClient'を使い、次に' LoadXml() 'で結果の文字列を返します。 – svick

答えて

0

あなたは.NET 3.5を使用してへのアクセス権を持っている場合は、私はLinq2Xmlを使用してお勧めします。 Linq2Xmlを使用して、WebClientを使用してソースをダウンロードし、XElement.Parse()を使用してhtmlを解析します(XElement.Parse()はXML開始タグを必要としません)。

関連する問題