有什么方法可以使-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文件?

这可能吗?

有什么方法可以使-XML元素的值成为动态的吗

我将重述我从你的问题中理解的内容,以确保我"明白"。

您有一个程序集(来自.dll),它读取一个XML文件作为数据源,以从一个看起来像<GalleryID>2</GalleryID> 的节点中获取"GalleryID"

您希望能够在程序集读取GalleryID之前更改它。

假设(是的,很危险…)您正在从您可以控制的应用程序调用程序集。(因为,您可能无法控制读取XML文档的程序集。)这将是调用上下文,也是定义Server.MapPath中"服务器"将查找"Conntrols/Settings.xml" 的确切位置的主机

脑海中浮现出两个基本的解决方案:

  1. 打开XML文档,更改值并将其从调用上下文中保存
  2. 将调用上下文中的XML文档"settings.XML.alt"替换为"settings.XML"

在进程中的数据库中完成这项工作不是更好吗?

你向我解释说,你将有很多不同的画廊。通过这种方式,对于如此多的动态数据,我认为您最好使用进程内数据库,如SQL Server Compact,并且可以使用实体框架代码轻松完成。首先,从NuGet上取下包裹。如果你可以控制你的数据源,我个人会走这条路。