2012-01-18 83 views
2

我以前加載一個XML文件,使用:文件上傳加載.XML

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

現在我要加載的文件,用文件上傳框:

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

但現在我在「(doc.root)」上出現錯誤。它表示「不包含」Root「的定義,並且沒有包含接受第一個參數類型的擴展方法」Root「。我究竟做錯了什麼?

+0

'Root'和'root'在你的兩個例子不同的資本。那是故意的嗎? – Jon 2012-01-18 00:27:31

回答

2

這是因爲XmlDocument沒有root屬性; XmlDocument的根由對象的DocumentElement屬性表示,對於您的情況:doc.DocumentElement並且由於您的方法接收到XElement參數作爲輸入,所以在將它傳遞到Visit()方法之前,需要將XmlElement轉換爲XElement。使用下面的功能來做到這一點。

  /// <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 2012-01-18 00:38:08

+0

是的,XmlDocument中沒有root屬性,但是DocumentElement將表示XML的實際根。 – 2012-01-18 00:39:04

+0

Visit方法的簽名是什麼,它接收的對象的類型是什麼? – 2012-01-18 00:39:31