有什么方法可以使-XML元素的值成为动态的吗
本文关键字:动态 元素 什么 方法 可以使 -XML | 更新日期: 2023-09-27 17:58:13
我知道这个问题似乎不合逻辑,但我必须尝试,我希望找到一种方法,
我有一个DLL程序集,它从XML文件中读取一个变量"GalleryID"。我无法修改程序集,所以我想知道是否可以使XML元素值动态?例如,在不更改程序集的情况下,从查询字符串或任何其他场景中获取此值。
在Settings.xml
:中
< ?xml version="1.0" encoding="utf-8"? >
< GallerySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
< GalleryID >2< /GalleryID > // Here I would like this value to be dynamic, not static like this.
< /GallerySettings >
在mylibrary
组件中:
protected static XmlDocument myXmlDoc;
' in Page_Load ev mylibrary
MyLibrary.myXmlDoc.Load(base.Server.MapPath("Conntrols/Settings.xml"));
XmlNode documentElement = MyLibrary.myXmlDoc.DocumentElement;
MyLibrary.myappSettings.GalleryID = documentElement.SelectSingleNode("GalleryID").ChildNodes[0].Value.ToString();
这是一个有多个用户的ASP.NET网站。当用户登录并打开gallery.aspx
页面时,它将显示用户自己的图库。此场景现在不起作用,因为库模块根据Settings.xml
文件中的设置向所有用户显示一个库(Galleryid=2)。如何在querystring--gallery.aspx?galleryid=5
中传递galleryid并将其注入Settings.xml
文件?
这可能吗?
我将重述我从你的问题中理解的内容,以确保我"明白"。
您有一个程序集(来自.dll),它读取一个XML文件作为数据源,以从一个看起来像<GalleryID>2</GalleryID>
的节点中获取"GalleryID"
您希望能够在程序集读取GalleryID之前更改它。
我假设(是的,很危险…)您正在从您可以控制的应用程序调用程序集。(因为,您可能无法控制读取XML文档的程序集。)这将是调用上下文,也是定义Server.MapPath中"服务器"将查找"Conntrols/Settings.xml"
的确切位置的主机
脑海中浮现出两个基本的解决方案:
- 打开XML文档,更改值并将其从调用上下文中保存
- 将调用上下文中的XML文档"settings.XML.alt"替换为"settings.XML"
在进程中的数据库中完成这项工作不是更好吗?
你向我解释说,你将有很多不同的画廊。通过这种方式,对于如此多的动态数据,我认为您最好使用进程内数据库,如SQL Server Compact,并且可以使用实体框架代码轻松完成。首先,从NuGet上取下包裹。如果你可以控制你的数据源,我个人会走这条路。