xml
  • vbscript
  • 2016-06-22 16 views 0 likes 
    0

    これについての回答は見つかりませんでした。私はxmlファイルと対話するVBScriptを書いています。私は2つの異なる属性に基づいて、XMLノードを取得するためにSELECTSINGLENODEを使用しようとしているxmlノードを2つの属性値で選択してください。VBS

    は、私は属性を持つフィーチャノードを選択しようとしている

    set featureNode=objXMLDoc.SelectSingleNode("//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE', @section='E-E']") 
    

    ような何かID = "NのANGLE値"、section =" EE "

    「期待トークン」」「見つかりました」というエラーが表示されますが、明らかにカンマが嫌いです。誰でも正しい構文を知っていますか(これが可能ならば)?私はgetElementsByTagNameのを使用して、私はノードを見つけるまでをループ欲しいものを得ることができます

    <Sevo> 
        <NCR ID="N1" PN="30G3955"> 
         <SN ID="006302" Op="millvane" ncrDate="6/22/2016 8:43:36 AM" mrbDate=""> 
          <FT ID="N ANGLE" Section="E-E" LSL="32.243" USL="32.909">32.240</FT> 
          <FT ID="N ANGLE" Section="L-L" LSL="25.336" USL="26.002">25.300</FT> 
         </SN> 
        </NCR> 
    </Sevo> 
    

    最悪の場合:

    は、ここに私のxmlです。

    おかげ

    答えて

    0

    論理積が呼ば "と"(doc)されます。デモ:

    Option Explicit 
    
    Dim s : s = Join(Array(_ 
        "<Sevo>" _ 
        ,  "<NCR ID=""N1"" PN=""30G3955"">" _ 
        ,   "<SN ID=""006302"" Op=""millvane"" ncrDate=""6/22/2016 8:43:36 AM"" mrbDate="""">" _ 
        ,    "<FT ID=""N ANGLE"" Section=""E-E"" LSL=""32.243"" USL=""32.909"">32.240</FT>" _ 
        ,    "<FT ID=""N ANGLE"" Section=""L-L"" LSL=""25.336"" USL=""26.002"">25.300</FT>" _ 
        ,   "</SN>" _ 
        ,  "</NCR>" _ 
        , "</Sevo>" _ 
    ), "") 
    
    Dim oXDoc : Set oXDoc = CreateObject("MSXML2.DomDocument.6.0") 
    oXDoc.setProperty "SelectionLanguage", "XPath" 
    oXDoc.async = False 
    oXDoc.loadXML s 
    
    If 0 = oXDoc.ParseError Then 
        WScript.Echo "looks ok" 
        Dim sXPath 
    ' does not 'work' ==> 
    '  "//Sevo/NCR[@ID='N1']/SN[@ID='006302']/feature[@ID='N ANGLE', @section='E-E']" _ 
        For Each sXpath In Array(_ 
         "//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE']" _ 
        , "//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@Section='E-E']" _ 
        , "//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE' and @Section='E-E']" _ 
        , "//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE' and @Section='L-L']" _ 
        ) 
         WScript.Echo "search for |" & sXPath & "|" 
         Dim ndFnd : Set ndFnd = oXDoc.selectSingleNode(sXpath) 
         If Not ndFnd Is Nothing Then 
          WScript.Echo "  found |" & ndFnd.xml & "|" 
         Else 
          WScript.Echo "  nothing found" 
         End If 
        Next 
    Else 
        WScript.Echo oXDoc.ParseError.Reason 
    End If 
    

    出力:

    cscript 37970769.vbs 
    looks ok 
    search for |//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE']| 
        found |<FT ID="N ANGLE" Section="E-E" LSL="32.243" USL="32.909">32.240</FT>| 
    search for |//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@Section='E-E']| 
        found |<FT ID="N ANGLE" Section="E-E" LSL="32.243" USL="32.909">32.240</FT>| 
    search for |//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE' and @Section='E-E']| 
        found |<FT ID="N ANGLE" Section="E-E" LSL="32.243" USL="32.909">32.240</FT>| 
    search for |//Sevo/NCR[@ID='N1']/SN[@ID='006302']/FT[@ID='N ANGLE' and @Section='L-L']| 
        found |<FT ID="N ANGLE" Section="L-L" LSL="25.336" USL="26.002">25.300</FT>| 
    
    +0

    ああ、これはそれらの顔のヤシの瞬間の一つで、それが今取り組んでいます。なぜ私はそれを試みると思わなかったのか分かりません。再度、感謝します。 – Dewey823

    関連する問題