2012-01-18 5 views
2

をロードする:のFileUploadは、私が以前に使用してXMLファイルをロードした.XML

 XDocument doc = XDocument.Load("File.xml"); 
     Visit(doc.Root); 

今私はのFileUploadボックスを使用してファイルをロードしたい:

 XmlDocument doc = new XmlDocument(); 
     doc.Load(FileUpload1.FileContent); 
     Visit(doc.root); 

しかし、今、私はよ"(doc.root)"にエラーが発生しました。 「Root」の定義はなく、拡張メソッド「Root」は最初の引数型を受け入れません。私は間違って何をしていますか?

+0

'Root'と' root'があなたの二つの例では異なる資産計上されます。それは意図的なのでしょうか? – Jon

答えて

2

これは、XmlDocumentがルートプロパティを持っていないためです。 XmlDocumentのルートは、オブジェクトのDocumentElementプロパティ(場合によってはdoc.DocumentElement)で表され、メソッドはXElementパラメータを入力として受け取るため、XmlElementをXElementに変換してからVisit()メソッドに渡す必要があります。それには以下の関数を使用します。

  /// <summary>   
    /// Converts an XmlElement to an XElement.   
    /// </summary>   
    /// <param name="xmlelement">The XmlElement to convert.</param>   
    /// <returns>The equivalent XElement.</returns>   
    public static XElement ToXElement(XmlElement xmlelement)   
    {     
    return XElement.Load(xmlelement.CreateNavigator().ReadSubtree());   
    } 

次に、このように呼び出してみてください:

Visit(ToXElement(doc.DocumentElement)); 
+0

このように?訪問(doc.DocumentElement); 無効な引数があります... – MXV

+0

はい、XmlDocumentにはルートプロパティはありませんが、DocumentElementはXMLの実際のルートを表します。 –

+0

Visitメソッドのシグニチャは何ですか、受け取るオブジェクトのタイプは何ですか? –

関連する問題