2017-08-14 54 views
0

我正在使用Visual Basic應用程序來生成和管理數據,這些數據同時將被加載到網頁中。動態尋址xml文檔字段

我選擇通過XML來做到這一點,因爲它似乎是阻力最小的路徑。

這不是一個標準的xml文件,幾乎每個元素都有一個唯一的名稱,可以被vb應用程序和網頁引用,以確保數據在兩種情況下都能被正確識別。然而,由於該數據的複雜性我需要能夠引用的字段動態地

例如

TextBox控件對應於XML元素,他們將數據加載到

每個具有唯一的名稱
Textbox Name = xml.<root>.<Name> 
Textbox Age = xml.<root>.<Age> 
Textbox Height = xml.<root>.<Height> 

的想法是,更新功能將成爲所有文本框相同,將根據已更新該控件的名稱標識的XML元素:

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

但我不能很好的解決這個問題。

+0

我建議你把每個節點的XPATH地址放到相應控件的'.Tag'屬性中。 – SSS

+0

我想過這個,但我仍然會遇到同樣的問題,我試圖使用字符串引用xml元素 –

回答

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") 
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標籤都必須沒有標識,否則您需要在for循環內找到處理它們的方法。