我有一個xml文件,看起來像這樣;如何從由它的屬性指定的元素中獲取childnode.element.text?
[data.xml中]
<?xml version="1.0"?>
<elem1 id="obj1">
<celem1>Text1</celem1><celem2>Text2</celem2>
</elem1>
<elem2 id="obj2">
<celem1>Text3</celem1><celem2>Text4</celem2>
</elem2>
這看起來像這樣的讀取XML功能;
Function GetVar(XMLTag, strNum)
Set oXMLFile = CreateObject("Msxml2.DOMDocument")
oXMLFile.Load("data.xml")
Set oXMLFileVariable = oXMLFile.getElementsByTagName(XMLTag)
GetVar = oXMLFileVariable.Item(strNum).Text
End Function
調用這樣的功能;
Call GetVar("celem1", 0)
Call GetVar("celem2", 0)
Call GetVar("celem1", 1)
Call GetVar("celem2", 1)
將返回;
「文本1」
「文本2」
「文本3」
「文本4」
我希望能夠返回的childnode element.text通過指定其父節點的屬性。像這樣的東西;
[僞碼 - 請原諒我,如果我的方式在這裏下車]
GetChildNode.Text(elem1(GetAttribute="obj1").celem1())
會回到這樣的事情;
「文本1」
我之所以這樣問是因爲我想有利於那些普通的刪除特定元素的名稱,然後就可以通過指定召喚出特定element.text信息屬性。我不喜歡爲xml文檔中的每個新條目創建和維護一個唯一的元素標記。
我目前正在使用VBscript,但我可以改變到別的東西(Windows環境),將工作。
[--- --- EDIT]
使用安斯加爾Wiechers實例中,我已經創建了以下;
[data。XML]
<?xml version="1.0"?>
<elem id="obj1">
<celem id="item1">Text1</celem><celem id="item2">Text2</celem>
</elem>
<elem id="obj2">
<celem id="item1">Text3</celem><celem id="item2">Text4</celem>
</elem>
和腳本;
str1 = GetVar("obj1", "celem", "item1")
str2 = GetVar("obj2", "celem", "item2")
MsgBox str1
MsgBox str2
Function GetVar(parentID, childNode, childAtt)
GetVar = Null 'set a safe default return value
Set oXMLFile = CreateObject("Msxml2.DOMDocument.6.0")
oXMLFile.async = False
oXMLFile.Load "xpath.xml"
If oXMLFile.parseError = 0 Then
xpath = "//*[@id='" & parentID & "']/" & childNode _
& "[@id='" & childAtt & "']"
Set node = oXMLFile.selectSingleNode(xpath)
If Not node Is Nothing Then GetVar = node.text
Else
'report errors
WScript.Echo oXMLFile.parseError.reason
End If
End Function
第一MSGBOX將返回 「文本1」
第二MSGBOX將返回 「文本4」
這正是我一直在尋找! !
做一些閱讀它似乎可能工作; oXMLFile.getElementsByTagName(「elem1」)[0] .childNodes(「celem1」)[0] 我得試試看。 – s3d83d