簡體   English   中英

如何使用ExecuteXmlReader正確輸出XML數據

[英]How can i correctly output XML-data with ExecuteXmlReader

我有一個ASP.NET 4.0應用程序,我嘗試使用SQLCommand類中的ExecuteXmlReader函數來獲取XML結果。 查詢不會產生任何錯誤。 查詢以FOR XML AUTO, ELEMENTS, ROOT('root')結尾。 但是當我嘗試這個:

Dim XML As XElement = XElement.Load(query.ExecuteXmlReader)
XML.Save(HttpContext.Current.Server.MapPath("~/Result.xml"))

我收到此錯誤消息:

XmlReader必須位於Element類型的節點上,而不是None類型的節點上。 (英文翻譯)

Der XmlReader可以在Knoten vom Typ'Element'中找到最好的名稱,而在Knoten vom Typ'None'中則可以。 (德語翻譯)

奇怪的是,錯誤發生在XElement.Load(query.ExecuteXmlReader) 但是代碼運行得更遠! 它還將xml數據保存到磁盤! 這怎么可能發生,我怎么能沒有錯誤地讀出xml結果?

我在讀取多個FOR XML AUTO語句時遇到了類似的問題。 解決了將XmlReader傳遞給System.Xml.XPath.XPathDocument的問題:

 public static XDocument MultipleNodes(XmlReader reader, string RootName = "Root")
    {
        var doc = new XDocument(new XElement(RootName));

        var xn = new XPathDocument(reader).CreateNavigator();
        XPathNodeIterator iterator = xn.Select("/*");   // Level 1 multiple Elements
        foreach (XPathNavigator item in iterator)
        {
            doc.Root.Add(XElement.Load(item.ReadSubtree()));
        }

        return doc;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM