У меня есть программа VB6, которая терпит неудачу на конкретной машине.MSXML4 IXMLDOMNode.nodeTypedValue throwing Исключение несоответствия типа на одной машине
Характер проблемы такой код:
'this next line throws Type mismatch exception
If xml_file.documentElement.selectSingleNode("Node").Attributes.getNamedItem("InUse").nodeTypedValue Then
'do some stuff
End If
Программа использует Msxml4, и эта проблема возникает только на одной машине (пока), хотя он работает на многих других машинах. Кроме того, атрибут InUse определяется в XML-схеме следующим образом:
<xs:attribute name="InUse">
<xs:simpleType>
<xs:restriction base="xs:boolean">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Еще одна вещь.
Если я распечатаю TypeName() этого выражения .nodeTypedValue, он возвращается как «String». Поэтому неудивительно, что может возникнуть несоответствие типа. Но почему только на этой машине?
Поскольку я думаю об этом, у этой машины может быть установлен язык на другой язык, чем на других машинах, которые я тестирую. Может ли это что-то с этим делать? Использует ли VB6 локаль, как заставить строку «ложь» в логическую? Если да, есть ли способ заставить его использовать английский язык?
Любые идеи?
Спасибо, Боб. Разумеется, изменение языка было проблемой. Похоже, у нас есть много рефакторинга, чтобы поддерживать разные локали, так как есть много этих неявных преобразований. – Stringfellow
Если вы используете соответствующий XSD, то .nodeTypedValue по-прежнему работает, однако MSXML не поддерживает весь спектр типов, поэтому вы можете столкнуться с такими проблемами, как DateTime.rfc1123. – Bob77