Jump to content

Recommended Posts

Posted

Hey, just wondering if anyone has ever encountered intermittent COM Object Errors with Microsoft.XMLDOM pulling node values. I'm currently getting "Bad Variable Type" intermittently, and simply running the script again would allow it to get further in the parsing loop, only to encounter the error again. The data is persistent, and it is always a string.

Here's a snippet of where the error event occurs

$Target = "Item001"
$SearchItem = $oXML.SelectNodes("//Items/Name[. = """&$Target&"""]")
If $SearchItem.Length==1 Then
    AddToLog("XML: Found a match for """&$Target&""", Gathering details...")
    $TargetItem = $SearchItem.Item(0).ParentNode
    $ItemSKU = XMLGetValue($TargetItem, "SKU")
Endif

and here's the snip of my XMLGetValue function where the error is always triggered on the $Value = ...

Func XMLGetValue($Node="", $ValueName="", $NestLevel=0)
...
    If $Node.GetElementsByTagName($ValueName).Item(0).ChildNodes.Length==1 Then
        $Value = $Node.GetElementsByTagName(String($ValueName)).Item(0).ChildNodes(0).NodeValue
    Else
        ...Tell me there are more than one result for the target
    Endif    
...
EndFunc

I added the string() as a counter measure but that doesnt fix the error. The XML file contains standard data with no attributes or anything funky.

The weird thing is that if i reboot my workstation it might get all the way through, and then if i run it again it may burp some where throughout the loop process (For each item, get SKU, Add SKU to array, Do stuff with array contents afterwards). 

I have added sleep timers to my loops to try and pace the XML requests in case it was a sort of buffer underrun issue but im not certain whats going on.

 

Again, i could run the script and it would work perfectly and then fail another time. I've read up about readyState, but i dont know how to incorporate it in my script.

Has anyone seen this before? Thanks in advance for your help.

 

Posted
  On 5/19/2017 at 2:13 AM, jdelaney said:

I've never had a problem as long as I never string together so many objects like that.  The script won't be as concise, but when you have error handling on every level, all goes well with the run.

Expand  

Ok, ill try breaking it down a bit further with additional checks and error handling.  Thats what my initial approach was for XMLGetValue; to simplify the process of retrieving values from nodes, but the complication comes in to place when some values are nested further down within the node than others. 

Posted

Weird... i broke it right down and the error is popping up at this point

.ChildNodes(0)

Win Description:    Bad variable type.
Number:     80020008
 

There's got to be an easier way of doing this...

Fixed: I read another thread you commented on and used that method of pulling text from a node. Replaced my whole XMLGetValue function with the snip below and it worked.

.SelectSingleNode("./ValueName").text

 

I was over complicating the approach simply because i'm a self taught programmer and used the MSDN documentation instead of simplified code samples. Happy i swallowed my pride and came here to ask for help.

Thanks again

Posted
  On 5/19/2017 at 8:50 AM, SJF85 said:

 

i'm a self taught programmer and used the MSDN documentation

Expand  

Me too.

Welome to the club :)

 

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...