动态寻址xml文档字段

时间:2017-08-14 23:29:17

标签: xml vb.net

我正在使用Visual Basic应用程序来生成和管理数据,同时将其加载到网页中。

我选择通过XML来做到这一点,因为它似乎是阻力最小的路径。

这不是一个标准的xml文件,几乎每个元素都有一个唯一的名称,可以被vb app和网页引用,以确保在两种情况下都能正确识别数据。但是由于数据的复杂性,我需要能够动态地引用这些字段

示例

文本框控件每个都有唯一的名称,这些名称对应于将数据加载到

的xml元素
Textbox Name = xml.<root>.<Name>
Textbox Age = xml.<root>.<Age>
Textbox Height = xml.<root>.<Height>

这个想法是更新函数对于所有文本框都是相同的,并将根据更新的控件名称识别xml元素:

xml.<root>. & Control.name = control.value

但如果可能出现与此相似的事情,我就无法解决问题。

2 个答案:

答案 0 :(得分:0)

您必须使用BindingSource将XML中的数据绑定到控件,如下所示。

查看以下代码,评论将解释内容

<强>输入:

<root>
    <Name>Kumar Kumar</Name>
    <Age>28</Age>
    <Height>6</Height>
 </root>

<强>代码:

       'DECLARE A BINDING SOURCE
        Dim bs As BindingSource = New BindingSource()

        'DECALRE DATASET TO READ XML
        Dim ds As DataSet = New DataSet()

        'LOAD THE DATASET WITH XML
        ds.ReadXml("C:\\Users\\XXXXX\\Desktop\\test\\test.xml")

        'BIND THE DATASET TO BINDINGSOURCE WHICH HAS LOADED XML
        bs.DataSource = ds
        bs.DataMember = ds.Tables(0).TableName

        'THIS IS IMPORTANT TO BIND THE CONTROLS TO MEMEBERS OF BINDING SOURCE
        'THE FIRST PARAMETER OF THE ADD, IS THE "TEXT" ATTRIBUTE OF TEXT BLOCK
        'SECOND PARAMETER OF THE ADD, IS BINDING SOURCE
        'THIRD PARAMETER IS THE XML ATTRIBUTE TO BE BOUND
        TextBoxName.DataBindings.Add("Text", bs, "Name")
        TextBoxAge.DataBindings.Add("Text", bs, "Age")
        TextBoxHeight.DataBindings.Add("Text", bs, "Height")

答案 1 :(得分:0)

为了记录,我想我会添加我在这种情况下最终使用的解决方案。我知道这不是一个可部署的解决方案,但在我的具体情况下,这完全有效。

基本上,每个包含要从XML更新的信息的div都有自己的ID,然后XML中的相应标记也与div的id具有相同的名称。然后JS代码如下。

// read xml file into XMLDoc //get html elements bytagname "div" and
// then for loop through all of them
if (TableCells[i].id != "") {   
    xDataInput = XMLDoc.getElementsByTagName(TableCells[i].id);
    if (xDataInput[0].innerHTML == "True") {
       TableCells[i].className = "Active";
    }
}

再一次,这仅适用于所有XML字段都具有唯一名称的情况。此外,任何不从XML获取数据的div标记都必须没有id,或者您需要找到在for循环中处理它们的方法。