这是我的XML文件。
<PARAMETER>
<ETPAR_GUIX>
<item>
<PNAME>COAS_1</PNAME>
<PTYP>X</PTYP>
<PDESC>Generated Table for View</PDESC>
<PINDEX>0001</PINDEX>
<PGROUP>GETTAB</PGROUP>
<XMLREF_TYP>T</XMLREF_TYP>
<PSTRUC_TYP>T</PSTRUC_TYP>
<PREF_TYPE>VIEW</PREF_TYPE>
<PREF_NAME>COAS</PREF_NAME>
<PDATLEN>0000</PDATLEN>
<PINTLEN>000000</PINTLEN>
<PDECIMALS>000000</PDECIMALS>
<SORT_LNR>0001</SORT_LNR>
<PREF_NAME2>COAS</PREF_NAME2>
<VAL_TYPE>T</VAL_TYPE>
<TAB_INDEX>0</TAB_INDEX>
</item>
<item>
<PNAME>I_ORDER_NUMBER_FROM_TABLE</PNAME>
<PTYP>I</PTYP>
<PDESC>Generated Table for View</PDESC>
<PINDEX>0001</PINDEX>
<PGROUP>I.01</PGROUP>
<XMLREF_TYP>T</XMLREF_TYP>
<PSTRUC_TYP>T</PSTRUC_TYP>
<PREF_TYPE>VIEW</PREF_TYPE>
<PREF_NAME>COAS</PREF_NAME>
<PDATLEN>0000</PDATLEN>
<PINTLEN>000000</PINTLEN>
<PDECIMALS>000000</PDECIMALS>
<SORT_LNR>0001</SORT_LNR>
<PREF_NAME2>COAS</PREF_NAME2>
<VAL_TYPE>T</VAL_TYPE>
<TAB_INDEX>0</TAB_INDEX>
</item>
</ETPAR_GUIX>
</PARAMETER>
我想检查XML节点<PNAME>
是否以字母“I”开头。如果所有XML节点<PNAME>
都没有以字母“I”开头,则VB脚本应显示错误。这是我尝试过的vb脚本:
Const XMLDataFile = "D:\Automation\imp\p.xml"
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = False
xmlDoc.Load(XMLDataFile)
xmlDoc.validateOnParse = True
If xmlDoc.Load(XMLDataFile) Then
msgbox "SUCCESS loading XML File"
Else
msgbox "ERROR loading XML File"
End If
counter=0
Set root = xmlDoc.documentElement
Set items = root.childNodes
for each item in items
myPNAME = xmlDoc.getElementsByTagName("PNAME").item(counter).text
If (Left(myPNAME, 1) = "I") Then
IsValid = True
else
IsValid=false
End If
next
以上VB脚本代码检查以“I”开头的每个<PNAME>
字母si。但是如果XML节点<PNAME>
字母都没有以字母“I”开头,那么VB脚本应该显示错误。
请帮我。提前谢谢。
答案 0 :(得分:0)
您需要在循环外预设IsValid
到False
,如果找到第一个匹配项,请将值更改为True
。改变这个:
for each item in items
myPNAME = xmlDoc.getElementsByTagName("PNAME").item(counter).text
If (Left(myPNAME, 1) = "I") Then
IsValid = True
else
IsValid=false
End If
next
进入这个:
IsValid = False
For Each item In items
myPNAME = xmlDoc.getElementsByTagName("PNAME").item(counter).text
If Left(myPNAME, 1) <> "I" Then
IsValid = True
Exit For
End If
Next
'At this point the value of IsValid is True if at least one node text started
'with a capital I. Otherwise its value is False.