2014-09-23 80 views
0

這是我的要求 - 1)我有一個xml和相應的xsd文檔 2)它是一個複雜的xml,包含多個元素及其層次結構。但是隻有某些重要的元素/域是重要的 3)我想創建一個excel用戶可以在這些域中輸入多行數據 4)當用戶點擊創建xml時,應該爲每一行創建單獨的xml 5)創建應包含所有要素(用戶輸入的原始XML +更多)使用宏使用Excel中的數據創建xml

這僅僅是一個的Sample-

<A> 
    <A1/> 
    <A2/> 
</A> 
<B> 
    <B1>*User entered value*</B1> 
    <B2>*User entered value*</B2> 
</B> 
<C> 
    <C1/> 
    <C2/> 
</C> 

我發現MSXML2.DOMDocument60一些參考資料,其中一個可以創建XML中的XML使用這個API,並通過Excel宏對模式進行驗證。但在我的情況下,有1000個標籤。以下是一些選項 -

  1. 使用DOMDocument60 API並使用宏逐行構建xml。由於有1000個標籤,這種方法會吞噬1000多行代碼,這將使維護成爲一項繁瑣的任務!
  2. 因爲我有示例xml,我可以清空現有的值,然後使用用戶輸入的值(通過excel單元格數據獲取)通過宏更新xml。這看起來更有效,因爲它可以節省數千行代碼,但這可能嗎?由於需要更新的元素分佈在xml中,我是否能夠搜索元素並僅更新該元素,而不會影響xml中的任何其他數據/標記?
  3. 什麼都可以用xsd完成?根據我的要求,沒有閃動到我的腦海裏
  4. 還有其他的選擇嗎?

欣賞這方面的幫助。謝謝 !

回答

0

如果你有一個基地,你可以使用類似的東西:

Open "e:\0\xml.xml" For Input As #1 
Open "e:\0\xml1.xml" For Output As #2 

i = 1 
While Not EOF(1) 
    Line Input #1, aa 

    If InStr(1, aa, "<B1>", vbTextCompare) > 0 Then 
     aa = Left(aa, 3 + InStr(1, aa, "<B1>", vbTextCompare)) & Cells(i, 1).Value & Right(aa, Len(aa) - InStr(1, aa, "</B1>", vbTextCompare) + 1) 
     i = i + 1 
    End If 

    Print #2, aa 
Wend 

Close #1 
Close #2 

代碼複製原始文件,將A列標籤B1內的文本與價值
如果你有更多「件」,你可以合併不同的文件...