Document.IsValid
Methode: HRESULT IsValid([in, out] VARIANT *strError, [in, out] VARIANT *nErrorPos, [in, out] VARIANT *pBadData, [out,retval] VARIANT_BOOL *bValid);
Rückgabewert
True, wenn das Dokument gültig ist, false, wenn es nicht gültig ist. Um IsValid() aufrufen zu können, muss die Benutzeroberfläche der Applikation sichtbar sein. (Wenn Sie eine Validierung durchführen wollen, ohne dass die Benutzeroberfläche angezeigt wird, verwenden Sie bitte Altova RaptorXML Server).
Beschreibung
IsValid validiert das Dokument anhand des damit verknüpften Schemas bzw. der DTD. strError gibt dieselbe Fehlermeldung zurück, wie wenn Sie die Datei über die Benutzeroberfläche validieren.
Fehler
1400 | Das Objekt ist nicht mehr gültig. |
1407 | Ungültiger Parameter oder es wurde für den Rückgabeparameter eine ungültige Adresse angegeben. |
1408 | Datei kann nicht validiert werden. |
Beispiel
Im folgenden C++-Codefragment finden Sie ein Beispiel für die Verwendung der Methode IsValid.
#import "XMLSpy.tlb"
CComPtr< XMLSpyLib::IDocument12> ipDoc = ipXMLSpy->GetActiveDocument();
if ( ipDoc )
{
// prepare in/out parameters for IsValid call
CComVariant variantError;
CComVariant variantErrorPos;
CComVariant variantBadData;
// IsValid always shows a dialog with the validation result. This cannot be turned off.
bool bIsValid = ipDoc->IsValid( &variantError, &variantErrorPos, &variantBadData ) == VARIANT_TRUE;
if ( !bIsValid )
{
// retrieve values from out parameters
CString strError = (V_VT( &variantError ) == VT_BSTR ? V_BSTR( &variantError ) : _T( "" ));
long npos = (V_VT( &variantErrorPos ) == VT_I4 ? V_I4( &variantErrorPos ) : -1);
CComQIPtr< XMLSpyLib::IXMLData > ipXMLBadData = (V_VT( &variantBadData ) == VT_DISPATCH ? V_DISPATCH( &variantBadData ) : nullptr);
if ( ipXMLBadData )
strError += CString( _T("\n\n Node: ") ) + (LPCWSTR)ipXMLBadData->GetName();
if ( !strError.IsEmpty() )
AfxMessageBox( "Validation failed - " + strError );
}
}