⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 markupmsxml.h

📁 解析xml文件的强大包
💻 H
字号:
// MarkupMSXML.h: interface for the CMarkupMSXML class.
//
// Markup Release 8.3
// Copyright (C) 1999-2006 First Objective Software, Inc. All rights reserved
// Go to www.firstobject.com for the latest CMarkup and EDOM documentation
// Use in commercial applications requires written permission
// This software is provided "as is", with no warranty.

#if !defined(AFX_MARKUPMSXML_H__948A2705_9E68_11D2_A0BF_00105A27C570__INCLUDED_)
#define AFX_MARKUPMSXML_H__948A2705_9E68_11D2_A0BF_00105A27C570__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#pragma warning(disable:4996) // suppress VS 2005 deprecated function warnings
#pragma warning(disable:4786)
#endif // _MSC_VER > 1000

#if defined(MARKUP_MSXML4)
#import <msxml4.dll> no_function_mapping
#define MSXMLNS MSXML2
#elif defined(MARKUP_MSXML3)
#import <msxml3.dll> no_function_mapping
#define MSXMLNS MSXML2
#else
#import <msxml.dll>
#define MSXMLNS MSXML
#endif

class CMarkupMSXML  
{
public:
#if defined(MARKUP_MSXML3) || defined(MARKUP_MSXML4)
	MSXMLNS::IXMLDOMDocument2Ptr m_pDOMDoc;
#else
	MSXMLNS::IXMLDOMDocumentPtr m_pDOMDoc;
#endif
	CMarkupMSXML();
	CMarkupMSXML( LPCTSTR szDoc );
	virtual ~CMarkupMSXML();

	// Navigate
	BOOL Load( LPCTSTR szFileName );
	BOOL SetDoc( LPCTSTR szDoc );
	BOOL FindElem( LPCTSTR szName=NULL );
	BOOL FindChildElem( LPCTSTR szName=NULL );
	BOOL IntoElem();
	BOOL OutOfElem();
	void ResetChildPos() { if ( m_pChild ) m_pChild.Release(); };
	void ResetMainPos() { ResetChildPos(); if ( m_pMain ) m_pMain.Release(); };
	void ResetPos() { ResetMainPos(); m_pParent = m_pDOMDoc; };
	BOOL SetMainPosPtr( MSXMLNS::IXMLDOMNodePtr pMain );
	CString GetTagName() const { return x_GetTagName(m_pMain); };
	CString GetChildTagName() const { return x_GetTagName(m_pChild); };
	CString GetData() const { return x_GetData( m_pMain ); };
	CString GetChildData() const { return x_GetData(m_pChild); };
	CString GetAttrib( LPCTSTR szAttrib ) const { return x_GetAttrib( m_pMain, szAttrib ); };
	CString GetChildAttrib( LPCTSTR szAttrib ) const { return x_GetAttrib( m_pChild, szAttrib ); };
	CString GetAttribName( int n ) const;
	int FindNode( int nType=0 );
	int GetNodeType() { return x_GetNodeType( m_pMain ); };
	CString GetError() const { return m_strError; };

	enum MarkupNodeType
	{
		MNT_ELEMENT					= 1,  // 0x01
		MNT_TEXT					= 2,  // 0x02
		MNT_WHITESPACE				= 4,  // 0x04
		MNT_CDATA_SECTION			= 8,  // 0x08
		MNT_PROCESSING_INSTRUCTION	= 16, // 0x10
		MNT_COMMENT					= 32, // 0x20
		MNT_DOCUMENT_TYPE			= 64, // 0x40
		MNT_EXCLUDE_WHITESPACE		= 123,// 0x7b
	};

	// Create
	BOOL Save( LPCTSTR szFileName );
	CString GetDoc() const;
	BOOL AddElem( LPCTSTR szName, LPCTSTR szData=NULL ) { return x_AddElem(szName,szData,false,false); };
	BOOL InsertElem( LPCTSTR szName, LPCTSTR szData=NULL ) { return x_AddElem(szName,szData,true,false); };
	BOOL AddChildElem( LPCTSTR szName, LPCTSTR szData=NULL ) { return x_AddElem(szName,szData,false,true); };
	BOOL InsertChildElem( LPCTSTR szName, LPCTSTR szData=NULL ) { return x_AddElem(szName,szData,true,true); };
	BOOL AddElem( LPCTSTR szName, int nValue ) { return x_AddElem(szName,nValue,false,false); };
	BOOL InsertElem( LPCTSTR szName, int nValue ) { return x_AddElem(szName,nValue,true,false); };
	BOOL AddChildElem( LPCTSTR szName, int nValue ) { return x_AddElem(szName,nValue,false,true); };
	BOOL InsertChildElem( LPCTSTR szName, int nValue ) { return x_AddElem(szName,nValue,true,true); };
	BOOL AddAttrib( LPCTSTR szAttrib, LPCTSTR szValue ) { return x_SetAttrib(m_pMain,szAttrib,szValue); };
	BOOL AddChildAttrib( LPCTSTR szAttrib, LPCTSTR szValue ) { return x_SetAttrib(m_pChild,szAttrib,szValue); };
	BOOL AddAttrib( LPCTSTR szAttrib, int nValue ) { return x_SetAttrib(m_pMain,szAttrib,nValue); };
	BOOL AddChildAttrib( LPCTSTR szAttrib, int nValue ) { return x_SetAttrib(m_pChild,szAttrib,nValue); };
	BOOL AddSubDoc( LPCTSTR szSubDoc ) { return x_AddSubDoc(szSubDoc,false,false); };
	BOOL InsertSubDoc( LPCTSTR szSubDoc ) { return x_AddSubDoc(szSubDoc,true,false); };
	CString GetSubDoc() const { return x_GetSubDoc(m_pMain); };
	BOOL AddChildSubDoc( LPCTSTR szSubDoc ) { return x_AddSubDoc(szSubDoc,false,true); };
	BOOL InsertChildSubDoc( LPCTSTR szSubDoc ) { return x_AddSubDoc(szSubDoc,true,true); };
	CString GetChildSubDoc() const { return x_GetSubDoc(m_pChild); };
	void SetDefaultNamespace( LPCTSTR szNamespace ) { m_strDefaultNamespace = szNamespace?szNamespace:_T(""); };
	BOOL AddNode( int nType, LPCTSTR szText ) { return x_AddNode(nType,szText,false); };
	BOOL InsertNode( int nType, LPCTSTR szText ) { return x_AddNode(nType,szText,true); };

	// Modify
	BOOL RemoveElem();
	BOOL RemoveChildElem();
	BOOL RemoveNode();
	BOOL SetAttrib( LPCTSTR szAttrib, LPCTSTR szValue ) { return x_SetAttrib(m_pMain,szAttrib,szValue); };
	BOOL SetChildAttrib( LPCTSTR szAttrib, LPCTSTR szValue ) { return x_SetAttrib(m_pChild,szAttrib,szValue); };
	BOOL SetAttrib( LPCTSTR szAttrib, int nValue ) { return x_SetAttrib(m_pMain,szAttrib,nValue); };
	BOOL SetChildAttrib( LPCTSTR szAttrib, int nValue ) { return x_SetAttrib(m_pChild,szAttrib,nValue); };
	BOOL SetData( LPCTSTR szData, int nCDATA=0 ) { return x_SetData(m_pMain,szData,nCDATA); };
	BOOL SetChildData( LPCTSTR szData, int nCDATA=0 ) { return x_SetData(m_pChild,szData,nCDATA); };

protected:
	MSXMLNS::IXMLDOMNodePtr m_pParent;
	MSXMLNS::IXMLDOMNodePtr m_pMain;
	MSXMLNS::IXMLDOMNodePtr m_pChild;
	CString m_strError;
	CString m_strDefaultNamespace;

	HRESULT x_CreateInstance();
	BOOL x_ParseError();
	MSXMLNS::IXMLDOMNodePtr x_FindElem( MSXMLNS::IXMLDOMNodePtr pParent, MSXMLNS::IXMLDOMNodePtr pNode, LPCTSTR szPath );
	CString x_GetPath( MSXMLNS::IXMLDOMNodePtr pNode ) const;
	CString x_GetTagName( MSXMLNS::IXMLDOMNodePtr pNode ) const;
	CString x_GetData( MSXMLNS::IXMLDOMNodePtr pNode ) const;
	CString x_GetAttrib( MSXMLNS::IXMLDOMNodePtr pNode, LPCTSTR szAttrib ) const;
	void CMarkupMSXML::x_Insert( MSXMLNS::IXMLDOMNodePtr pParent, MSXMLNS::IXMLDOMNodePtr pNext, MSXMLNS::IXMLDOMNodePtr pNew );
	BOOL x_AddElem( LPCTSTR szName, LPCTSTR szData, BOOL bInsert, BOOL bAddChild );
	BOOL x_AddElem( LPCTSTR szName, int nValue, BOOL bInsert, BOOL bAddChild );
	CString x_GetSubDoc( MSXMLNS::IXMLDOMNodePtr pNode ) const;
	BOOL x_AddSubDoc( LPCTSTR szSubDoc, BOOL bInsert, BOOL bAddChild );
	BOOL x_SetAttrib( MSXMLNS::IXMLDOMNodePtr pNode, LPCTSTR szAttrib, LPCTSTR szValue );
	BOOL x_SetAttrib( MSXMLNS::IXMLDOMNodePtr pNode, LPCTSTR szAttrib, int nValue );
	BOOL x_CreateNode( CString& strNode, int nNodeType, LPCTSTR szText );
	BOOL x_AddNode( int nNodeType, LPCTSTR szText, BOOL bInsert );
	int x_GetNodeType( MSXMLNS::IXMLDOMNodePtr pNode ) const;
	BOOL x_SetData( MSXMLNS::IXMLDOMNodePtr& pNode, LPCTSTR szData, int nCDATA );
};

#endif // !defined(AFX_MARKUPMSXML_H__948A2705_9E68_11D2_A0BF_00105A27C570__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -