83 lines
1.7 KiB
C++
83 lines
1.7 KiB
C++
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
#include "stdafx.h"
|
|
#include "util.h"
|
|
#include "DiscoMapparser.h"
|
|
#include "DiscoMapDocument.h"
|
|
CDiscoMapParser::CDiscoMapParser(void)
|
|
:m_pDocument(NULL)
|
|
{
|
|
}
|
|
|
|
CDiscoMapParser::~CDiscoMapParser(void)
|
|
{
|
|
}
|
|
|
|
CDiscoMapParser::CDiscoMapParser(ISAXXMLReader * pReader, CParserBase * pParent, DWORD dwLevel)
|
|
:CParserBase(pReader, pParent, dwLevel), m_pDocument(NULL)
|
|
{
|
|
}
|
|
|
|
CDiscoMapDocument * CDiscoMapParser::CreateDiscoMapDocument(void)
|
|
{
|
|
m_pDocument.Attach( new CDiscoMapDocument );
|
|
return m_pDocument;
|
|
}
|
|
|
|
|
|
TAG_METHOD_IMPL(CDiscoMapParser, OnDiscoveryClientResultsFile)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
return S_OK;
|
|
}
|
|
|
|
TAG_METHOD_IMPL(CDiscoMapParser, OnResults)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
return S_OK;
|
|
}
|
|
|
|
TAG_METHOD_IMPL(CDiscoMapParser, OnDiscoveryClientResult)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CStringW strRT;
|
|
HRESULT hr = GetAttribute(pAttributes, L"referenceType", sizeof("referenceType")-1, strRT);
|
|
|
|
if(FAILED(hr))
|
|
return hr;
|
|
|
|
CDiscoMapDocument * pDoc = GetDiscoMapDocument();
|
|
|
|
if(strRT == "System.Web.Services.Discovery.SchemaReference")
|
|
{
|
|
CStringW strURL;
|
|
hr = GetAttribute(pAttributes, L"url", sizeof("url")-1, strURL);
|
|
if(FAILED(hr))
|
|
return hr;
|
|
|
|
CStringW strFileName;
|
|
hr = GetAttribute(pAttributes, L"filename", sizeof("filename")-1, strFileName);
|
|
if(FAILED(hr))
|
|
return hr;
|
|
|
|
pDoc->AddSchema(strURL,strFileName);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
if(strRT == "System.Web.Services.Discovery.ContractReference")
|
|
{
|
|
CStringW strWSDLFile;
|
|
hr = GetAttribute(pAttributes, L"filename", sizeof("filename")-1, strWSDLFile);
|
|
if(FAILED(hr))
|
|
return hr;
|
|
|
|
pDoc->SetWSDLFile(strWSDLFile);
|
|
|
|
}
|
|
|
|
return S_OK;
|
|
}
|