Sql 使用XML元素的值作为过程的变量

Sql 使用XML元素的值作为过程的变量,sql,xml,vb.net,Sql,Xml,Vb.net,我是VB中使用XML的新手,我尝试使用元素DBName的值来查找要连接的活动SQL数据库名称。我已经看过很多代码,但它只是使更多的困惑。任何帮助都会很好 下面是我试图在其中使用变量的sub的代码。我试图从xml文档中获取DBName。xml的结构如下所示 <db> <User>DBUser2</User> <Password><![CDATA[xka2bOHaQZWesxHLFHlWaVw7JscbNFCobXbqYWc5rwppoNkAn3

我是VB中使用XML的新手,我尝试使用元素DBName的值来查找要连接的活动SQL数据库名称。我已经看过很多代码,但它只是使更多的困惑。任何帮助都会很好

下面是我试图在其中使用变量的sub的代码。我试图从xml文档中获取DBName。xml的结构如下所示

<db>
<User>DBUser2</User>
<Password><![CDATA[xka2bOHaQZWesxHLFHlWaVw7JscbNFCobXbqYWc5rwppoNkAn3K1uqriSCHdEzyY/FNDdbgRJTzDEIM8Jc5PYTBzfMUC5UIDtr16a64Xj7MRGI4/AvRcys/fIQDZQ947GesAc1rF/kbZu8AaZDVTjwObbNPT2L/h+IA6WjM9lqv6BOCi4dUeKxx5AneCBy2TJdifxEPdAIOT9lqTm5/aHFD0JgqSn0OTtWbLuYX9KX9uvA8L8zEH51yEmGl258aRVfpGfyxph/cpdnW1miRk4Q==]]></Password>
<Server>N127.0.0.1\CESSQL</Server>
<ServerDatabase>Marino</ServerDatabase>
<BackupServer></BackupServer>
<BackupDatabase></BackupDatabase>
<MasterPassword><![CDATA[EFmUxlkmQfIx4w18oQZ1dtCxAIXIyBZPCelL8csYX3E5NuHBZNI42UXNhFxmu87Ksj5CbQpC1WNTj4jnLaaq7nX6Oa4z3M7glLAeRaXWGAd3VqWfADRQAW3RCKKSJRMK3jwRWHJjY1Vp2hgn9CuMACvYHZUrUyK6nJ9HMiwaXcUJKtm4vl0toQNpwIuGvT2cfMJgvpjXJhTBfxKE75ZWeAldXhX5h/c6LYMQ6DE79uuhdbisfmIrXTskKTcceiRjWU2jTFumpjhM1tUqEoBFLw==]]></MasterPassword>

我不确定您想要什么,但您需要解析XML并在连接字符串中使用XML节点/元素。我甚至不确定这是否是一个好主意,请查看此链接以在VB中解析XML。这很简单。

如果您的问题是关于如何读取XML文件,请看下面的示例

假设声明了这一点:

Dim xml = <db>
            <User>DBUser2</User>
            <Password><![CDATA[xka2bOHaQZWesxHLFHlWaVw7JscbNFCobXbqYWc5rwppoNkAn3K1uqriSCHdEzyY/FNDdbgRJTzDEIM8Jc5PYTBzfMUC5UIDtr16a64Xj7MRGI4/AvRcys/fIQDZQ947GesAc1rF/kbZu8AaZDVTjwObbNPT2L/h+IA6WjM9lqv6BOCi4dUeKxx5AneCBy2TJdifxEPdAIOT9lqTm5/aHFD0JgqSn0OTtWbLuYX9KX9uvA8L8zEH51yEmGl258aRVfpGfyxph/cpdnW1miRk4Q==]]></Password>
            <Server>N127.0.0.1\CESSQL</Server>
            <ServerDatabase>Marino</ServerDatabase>
            <BackupServer></BackupServer>
            <BackupDatabase></BackupDatabase>
            <MasterPassword><![CDATA[EFmUxlkmQfIx4w18oQZ1dtCxAIXIyBZPCelL8csYX3E5NuHBZNI42UXNhFxmu87Ksj5CbQpC1WNTj4jnLaaq7nX6Oa4z3M7glLAeRaXWGAd3VqWfADRQAW3RCKKSJRMK3jwRWHJjY1Vp2hgn9CuMACvYHZUrUyK6nJ9HMiwaXcUJKtm4vl0toQNpwIuGvT2cfMJgvpjXJhTBfxKE75ZWeAldXhX5h/c6LYMQ6DE79uuhdbisfmIrXTskKTcceiRjWU2jTFumpjhM1tUqEoBFLw==]]></MasterPassword>
          </db>
或者,要保留变量名,请执行以下操作:

Dim ServerDatabaseValue As String = xml.Element("ServerDatabase").Value

始终指定变量类型。为了帮助您做到这一点,您可以在项目设置中设置
选项Strict On
选项推断Off
。这可以通过强制您养成某些(良好的)开发习惯来提高代码质量。

有几种读取XML的方法。您可以使用
XDocument
XmlDocument
XmlSerializer
XmlReader
,以及其他选项。你有偏好吗?您尝试了什么?根据一些阅读,我用XmlDocument添加了一些额外的编码。我相信这会得到我需要的结果,但我仍然不确定如何将该结果作为我的数据库名称变量。您可能不希望在问题中显示您的密码。出于特定原因,我在密码上加了星号。我想我无论如何都可以不说了。。。谢谢xml数据来自一个文件,该文件未按您列出的那样声明。我正在加载带有XmlDocument的文件。我可以用与此设置类似的方式标识元素吗?@FallingWax:您可以使用以下方法:
将xml作为XDocument=XDocument.Load(“C:\FPOS5\Data\dbinfo.xml”)
。然后我认为您需要将
xml.Element
更改为
xml.Root.Element
,其余的都一样。以上只是为了说明这个概念。
XDocument
方法是模块化的,因此它的任何部分都可以定制,即考虑多个节点,不匹配等,几乎不需要维护工作。这就做到了。谢谢你的帮助!
xml.Element("ServerDatabase").Value
Dim ServerDatabaseValue As String = xml.Element("ServerDatabase").Value