使用ashx的动态XML文件

时间:2011-03-29 15:38:42

标签: .net xml ashx directory

我遇到一个问题,我尝试使用XML Web控件提取XML文件的filePath。 XML文件存储在不同的目录中,我使用ashx文件来提供它。 ashx文件的工作原理是将XML文件名附加到字符串的末尾。

Dim oXML As New System.Web.UI.WebControls.Xml
oXML.DocumentSource = Server.MapPath("xmlHandler.ashx") & "?xml=sampleXMLfile.xml"
oXML.TransformSource = Server.MapPath("xmlStyles.xslt")
oXML.DataBind()

这对我来说似乎不起作用,我想知道是否将XML拉入后面的代码是唯一的方法?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

MapPath将HTTP路径/虚拟路径映射到物理文件夹:http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx

所以结果c:\file\on\disk\etc\xmlHandler.ashx?xml=sampleXMLfile.xml没有意义:它不是本地文件名。

如果您要下载该网址,请查看WebClient课程:http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.80).aspx

...然后根据http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.xml.documentsource(v=vs.80).aspxDocumentSource设置为从生成的下载数据或字符串或本地文件路径加载的XmlDocument(如您所见,您无法将DocumentSource设置为网址 - 而不是您提供有效的网址!)

答案 1 :(得分:0)

问题是我正在尝试构建XML的用户查看端,而开发人员构建了一个文件系统,用于从单独的目录中推送和提取XML文件。他设置了一个ashx文件来预览XML;然而,这使我的工作变得复杂,并让我在这里问我的问题。

为了解决这个问题,我绕过了ashx文件并使用它所持有的代码将xml拉到字符串并将其绑定到Xml webcontrol。

Dim fRead = New IO.FileStream(filePath, IO.FileMode.Open)
Dim sReader = New IO.StreamReader(fRead)
xmlString = sReader.ReadToEnd()
fRead.Close()
sReader.Close()

Dim oXML As New System.Web.UI.WebControls.Xml
oXML.DocumentContent = xmlString 
oXML.TransformSource = Server.MapPath("getTSP.xslt")
oXML.DataBind()
Panel1.Controls.Add(oXML)

再次感谢您的帮助。