Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用vbscript从XML中获取子节点_Xml_Vbscript_Xml Parsing - Fatal编程技术网

如何使用vbscript从XML中获取子节点

如何使用vbscript从XML中获取子节点,xml,vbscript,xml-parsing,Xml,Vbscript,Xml Parsing,我有以下类型的XML文件: <ECSC> <ATTRIBUTES> < all child nodes of attribute tag > </ATTRIBUTES> <SCRIPT> <ETXML_LINE_TABTYPE> <item>MESSAGE ( MSG_1 ).</item> <item>* To g

我有以下类型的XML文件:

<ECSC>
   <ATTRIBUTES>
        < all child nodes of attribute tag >
   </ATTRIBUTES>
   <SCRIPT>
      <ETXML_LINE_TABTYPE>
          <item>MESSAGE ( MSG_1 ).</item>
    <item>* To get the name of the Title Screen.</item>
    <item>  GETGUI ( FB01_100_STEP_1 ).</item>

    <item>  SAPGUI ( FB01_100_STEP_2 ).</item>
    <item>* Enter Amount and Tax Code.</item>
    <item>* and, Press F4 help in the Order Field.</item>
    <item>  SAPGUI ( FB01_300_STEP_1 ).</item>
    <item>* In F4 screen, enter the 'External Order Number'</item>
    <item>* pop-up screen is displayed with entries like Order, Description and External Order Number and select 1st order row, press Enter.</item>
    <item>  SAPGUI ( FB01_200_STEP_1 ).</item>
    <item>* To get the values for the field 'Order, Description and External Order No' from F4 help.</item>
    <item>  GETGUI ( FB01_120_STEP_1 ).</item>
    <item>* Press 'Enter' button.</item>
    <item>  SAPGUI ( FB01_120_STEP_3 ).</item>
    <item>* To get the value for the field 'Order' from Main screen.</item>
    <item>  GETGUI ( FB01_300_STEP_2 ).</item>
    <item>* click on 'F3' back button.</item>
    <item>  SAPGUI ( FB01_300_STEP_3 ).</item>
    <item>* click on 'F3' back button.</item>
    <item>  SAPGUI ( FB01_700_STEP_1 ).</item>
    <item>* click 'Yes' button.</item>
    <item>  SAPGUI ( FB01_200_STEP_2 ).</item>
    <item>* click on 'F3' back button.</item>
    <item>  SAPGUI ( FB01_100_STEP_3 ).</item>
    <item>ENDMESSAGE ( E_MSG_1 ).</item>
    <item/>
    <item>* To display the Title Screen.</item>
    <item>  LOG ( V_TITLE_SCREEN ).</item>
    <item>* To display the 'Order' Number from F4 help.</item>
    <item>  LOG ( V_ORDER_NO_FROM_F4 ).</item>
    <item>* To display the 'Description' from F4 help.</item>
    <item>  LOG ( V_DESCRIPTION_FROM_F4).</item>
    <item>* To display the 'External Order no' value from F4 help.</item>
    <item>  LOG ( V_EXTERNAL_ORDER_NO_FROM_F4 ).</item>
    <item>* To display the 'Order' Number from main screen.</item>
    <item>  LOG ( V_ORDER_NO_FRM_MAIN_SCREEN ).</item>
    <item>*********************************************************************.</item>
    <item>* End Execution.</item>
    <item>*********************************************************************.</item>
    <item/>
    <item>*******************************************************************.</item>
    <item>* Check.</item>
    <item>********************************************************************.</item>
    <item>* To check name of Title screen for transaction FB01.</item>
    <item>  CHEVAR ( V_TITLE_SCREEN = I_TITLE_SCREEN ).</item>
    <item>* To check the value for the field 'External Order No' from F4 help, which should be equal to 'External Order No' from table.</item>
    <item>  CHEVAR ( V_EXTERNAL_ORDER_NO_FRM_TABL = V_EXTERNAL_ORDER_NO_FROM_F4 ).</item>
    <item>* To check the values for the field 'Order' number from Table, which should be equal to 'Order' no from F4 screen and Main screen.</item>
    <item>  CHEVAR ( ( I_ORDER_NUMBER_FROM_TABLE = V_ORDER_NO_FROM_F4 ) AND ( I_ORDER_NUMBER_FROM_TABLE = V_ORDER_NO_FRM_MAIN_SCREEN )).</item>
    <item>*******************************************************************.</item>
    <item>* End Check.</item>
    <item>********************************************************************.</item>
    </ETXML_LINE_TABTYPE>
   </SCRIPT>
  <PARAMETERS>
        <all childnodes of parameter of parameters tag >
  </PARAMETERS>
  </ECSC>
请帮帮我。提前感谢您。

像“选择前面没有特定类型元素的每个
”这样的问题是XPath的最佳选择

//脚本//项[
字符串长度(规范化空格()>0
和子字符串(规范化空间(.),1,1)!='*'
和子字符串(规范化空间(前面的同级::项[1]),1,1)!='*'
]
i、 e

  • 下面的任何
  • 不是空的
  • 谁的第一个非空白字符不是星星
  • 其前一个
    也没有星星
在VBScript中:

Option Explicit

Dim XmlDoc
Dim DefectiveLines, Line, LineNum

Set XmlDoc = CreateObject("MSXML2.DOMDocument")

XmlDoc.setProperty "SelectionLanguage", "XPath"
XmlDoc.async = False
XmlDoc.load "D:\new Automation\backup\script.xml"

If XmlDoc.parseError = 0 Then
  Set DefectiveLines = XmlDoc.SelectNodes( _
    "//SCRIPT//item[" & _
      "string-length(normalize-space(.)) > 0" & _
      "and substring(normalize-space(.), 1, 1) != '*'" & _
      "and substring(normalize-space(preceding-sibling::item[1]), 1, 1) != '*'" & _
    "]" _
  )

  For Each Line In DefectiveLines
    LineNum = Line.SelectNodes("./preceding-sibling::item").Length + 1
    WScript.Echo "Error for line " & LineNum & ": " & Line.Text
  Next
Else
   WScript.Echo XmlDoc.parseError.reason
End If
这让我

  • 第1行出现错误:消息(MSG_1)
  • 第4行的错误:SAPGUI(FB01\U 100\U步骤\U 2)。
  • 第25行出现错误:结束消息(E_MSG_1)。

注意,我已经打开了
选项Explicit
,这是您应该养成的习惯。我还使用了更合理的变量名。

您所说的“我们想检测这样的节点文本,但没有提到任何注释”是什么意思?这很令人困惑。是的,现在它工作得很好。。。非常感谢你的朋友。。谢谢
Option Explicit

Dim XmlDoc
Dim DefectiveLines, Line, LineNum

Set XmlDoc = CreateObject("MSXML2.DOMDocument")

XmlDoc.setProperty "SelectionLanguage", "XPath"
XmlDoc.async = False
XmlDoc.load "D:\new Automation\backup\script.xml"

If XmlDoc.parseError = 0 Then
  Set DefectiveLines = XmlDoc.SelectNodes( _
    "//SCRIPT//item[" & _
      "string-length(normalize-space(.)) > 0" & _
      "and substring(normalize-space(.), 1, 1) != '*'" & _
      "and substring(normalize-space(preceding-sibling::item[1]), 1, 1) != '*'" & _
    "]" _
  )

  For Each Line In DefectiveLines
    LineNum = Line.SelectNodes("./preceding-sibling::item").Length + 1
    WScript.Echo "Error for line " & LineNum & ": " & Line.Text
  Next
Else
   WScript.Echo XmlDoc.parseError.reason
End If