VC读写XML文件
2019獨角獸企業重金招聘Python工程師標準>>>
先安裝控件msxml.msi
編碼:
MSXML2::IXMLDOMDocumentPtr pDoc;?
MSXML2::IXMLDOMElementPtr? xmlRoot ;?
?// 創建DOMDocument對象?
?HRESULT hr? =? pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));?
?if ( ! SUCCEEDED(hr))?
? {??
?MessageBox( " 無法創建DOMDocument對象,請檢查是否安裝了MS XML Parser 運行庫! " );?
? return? ;
}??
?// 根節點的名稱為Book
?// 創建元素并添加到文檔中?
?xmlRoot = pDoc -> createElement((_bstr_t) " Book " );
?// 設置屬性?
?xmlRoot -> setAttribute( " id " ,( const?? char?? * )m_strId);
pDoc -> appendChild(xmlRoot);
MSXML2::IXMLDOMElementPtr pNode;
?// 添加“author”元素?
?pNode = pDoc -> createElement((_bstr_t) " Author " );
pNode -> Puttext((_bstr_t)( const?? char?? * )m_strAuthor);
xmlRoot -> appendChild(pNode);
?// 添加“Title”元素?
?pNode = pDoc -> createElement( " Title " );
pNode -> Puttext(( const?? char?? * )m_strTitle);
xmlRoot -> appendChild(pNode);
?// 保存到文件?
?// 如果不存在就建立,存在就覆蓋???
?pDoc -> save( " d://he.xml " );
------------------------------------------------------------------------------------------------------------------------------------------------
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr;
hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
?if (FAILED(hr))
{??
? MessageBox( " 無法創建DOMDocument對象,請檢查是否安裝了MS XML Parser 運行庫! " );?
? return? ;
}??
?// 加載文件???
?pDoc -> load( " d://he.xml " );?
MSXML2::IXMLDOMNodePtr? pNode;
?// 在樹中查找名為Book的節點," // "表示在任意一層查找???
?pNode = pDoc -> selectSingleNode( " //Book " );
MSXML2::DOMNodeType nodeType;?
?// 得到節點類型???
?pNode -> get_nodeType( & nodeType);?
?// 節點名稱???
?CString strName;
strName = ( char?? * )pNode -> GetnodeName();
?// 節點屬性,放在鏈表中???
?MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap = NULL;
MSXML2::IXMLDOMNodePtr?? pAttrItem;
_variant_t variantvalue;
pNode -> get_attributes( & pAttrMap);
?long? count;
count = pAttrMap -> get_length( & count);
pAttrMap -> get_item( 0 , & pAttrItem);
?// 取得節點的值?
?pAttrItem -> get_nodeTypedValue( & variantvalue);
m_strId = ( char?? * )(_bstr_t)variantvalue;
// 添加整個文檔的根節點?
?void AddRootNode( CString strRootNode , CString strText = "")
?{
??m_pElement = m_pDoc->createElement( (LPCTSTR)strRootNode );
??m_pElement ->put_text( _bstr_t( (LPCTSTR)strText) );
??m_pDoc->appendChild( m_pElement );
?}
?
三種最流行的開放源碼?XML 庫?是 expat、libxml 和 Xerces。這三者都是跨平臺的,每一種都充當 XSLT?庫?實現的基礎,一旦滿足了基本?XML?需要之后,它就會給您一條成長途徑。
- expat 是 James Clark 創始的開放源碼面向事件的?XML?解析庫?。他已經將該項目轉讓給了 SourceForge 中的一個小組。有一個 SAX 封裝器可供使用。在許多項目中都可以找到 expat 解析器,如開放源碼瀏覽器 Mozilla、XSLT 處理器 Transformiix 和 RDF 工具 repat。
- libxml 為類似于 SAX 和 DOM 的操作提供了雙重方式 API。它支持對 DTD 的驗證,并且在 Gnome 的 XSLT 處理器libxslt?中使用。libxml 經過重寫,已作為 libxml(2) 發布,也許還稱為?libxml2?。這個庫?的用戶應該確保他們擁有了當前版本。
- Xerces 是非常堅固的、擁有大量文檔的庫?,它充當 IBM alphaWorks?XML?4C?庫?的基礎。Xerces 還用于 Apache XSLT 處理器 Xalan 中。Xerces 支持 DOM、SAX,以及對 DTD 的驗證。最新版本讀取并解釋了部分“W3C?XML?模式推薦”(打算到 2001 年底實現完整的?XML?模式支持)。
轉載于:https://my.oschina.net/laopiao/blog/106602
總結
- 上一篇: 批量导出AD组对象
- 下一篇: 云计算里AWS和Azure的探究(2)