繁体   English   中英

如何使用vbscript验证XML节点文本

[英]how to validate XML node text using vbscript

这是我的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脚本应显示错误。 请帮我。 先感谢您。

您需要在循环外将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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM