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