VC++ÖвÙ×÷XML£¨MFC¡¢SDK£©
VC++ÖвÙ×÷XML£¨MFC¡¢SDK£©
2009Äê01ÔÂ07ÈÕ ÐÇÆÚÈý 22:33
XMLÔÚWin32³ÌÐò·½ÃæÓ¦¸ÃûÓÐÔÚWeb·½ÃæÓ¦Óõö࣬ºÜ¶à
Win32³ÌÐòÒ²Ö»ÊÇÓÃXMLÀ´´æ´æÅäÖÃÐÅÏ¢¶øÒÑ£¬¶øÇÒûÓÐ×ã¹»
µÄºÃ´¦µÄ»°»¹²»ÈçÓà ini¡£VC++Àï²Ù×÷XMLÓÐÁ½¸ö¿â¿ÉÒÔÓãº
MSXMLºÍXmlLite¡£MSXMLÓÖϸ·ÖÁËÁ½ÖÖ½Ó¿Ú£ºDOMºÍSAX2¡£XPû×Ô´øÓÐ XmlLite£¬Ö»×Ô´øÓÐ2.x¡¢3.x°æµÄMSXML£¬²»Ö§³ÖSAX2£¨ÐèÒªMSXML 4.0ÒÔÉÏ£©£¬ËùÒÔÓÅÏÈʹÓÃDOM¡£
DOMÊÇÒÔCOMÐÎʽÌṩµÄ£¬VC++Àïµ÷ÓÃDOM¿ÉÒÔ·Ö3ÖÖ·½·¨£º
1¡¢MFCÀïÓÃCComPtrµ÷ÓÃ
2¡¢SDKÀïÖ±½Óµ÷ÓÃDOM½Ó¿Ú
3¡¢SDKÀïÓÃÖÇÄÜÖ¸Õëµ÷ÓÃ
Õâ3ÖÖ·½·¨±¾ÖÊÉÏÊÇÒ»ÑùµÄ£¬Çø±ðÖ»²»¹ýÔÚÓÚÐèÒª±àÂëµÄ¶àÉÙ
¶øÒÑ£¬ÓÃCComPtr¿ÉÒÔ¼«´óµÄ¼ò»¯´úÂ룬ÏÂÃæÊǼ¸¸öÀý×Ó¡£
Àý×Óstocks.xml£º
<?xml version="1.0" encoding="utf-8"?>
<root>
<node1>text1</node1>
<node2>
<childnode1 attrib1="value1" attrib2="value2"/>
<childnode2 attrib1="value1"
attrib2="value2">childtext1</childnode2>
</node2>
</root>
Õâ¸öÀý×ÓÓ¦¸Ã°üº¬ÁËXML×î³£¼ûµÄÌØÕ÷Á˰ɣ¿
MFC
MFCÀï¿ÉÒÔÖ±½ÓʹÓà DOM£¬²»ÐèÒªÊÖ¶¯Ìí¼Ó¶îÍâµÄÍ·Îļþ£¬Ö»
ÐèÒªÔÚCWinApp::InitInstance()Àïµ÷ÓÃCoInitialize(NULL)³õʼ»¯ COM£¬ÔÚCWinApp::ExitInstanceÀïµ÷ÓÃCoUninitialize()ÊÍ·ÅCOM¾ÍÐÐÁË¡£
//¶ÁÈ¡XML
CComPtr<IXMLDOMDocument> spDoc; //DOM
spDoc.CoCreateInstance(CLSID_DOMDocument);
VARIANT_BOOL vb;
spDoc->load(CComVariant(OLESTR("stocks.xml")),
&vb); //¼ÓÔØXMLÎļþ
CComPtr<IXMLDOMElement> spRootEle;
spDoc->get_documentElement(&spRootEle); //¸ù½Úµã
CComPtr<IXMLDOMNodeList> spNodeList;
spRootEle->get_childNodes(&spNodeList); //×Ó½ÚµãÁбí
long nLen;
spNodeList->get_length(&nLen); //×Ó½ÚµãÊý
for (long i = 0; i != nLen; ++i) //±éÀú×Ó½Úµã
{
CComPtr<IXMLDOMNode> spNode;
spNodeList->get_item(i, &spNode);
ProcessNode(spNode); //½Úµã´¦Àíº¯Êý
}
//дÈëXML
CComPtr<IXMLDOMNode> spNode;
spRootEle->selectSingleNode(OLESTR("/root/node1"),
&spNode);
spNode->put_te
Ïà¹ØÎĵµ£º
ÔÚjavaÖе÷ÓÃ×Ô¼ºµÄc++´úÂëÊÇÒ»¼þ¼òµ¥µÄÊÂÇ飬ÒÔÏÂÀàΪÀý£º
class Prompt {
private native String getLine(String prompt);
public static void main(String args[]) {
Prompt p = new Prompt();
String input = p.getLine("Type a line: ");
&nbs ......
XMLÎĵµ·Ö¸î³ÉС¿é
µ±ÄãÒª°ÑXMLÎĵµ·Ö¸î³ÉС¿éʱ£¬ÄãÒª¶ÁÈ¡ÊäÈëÎĵµ£¬´´½¨Êä³öÎĵµºÍת»»×ÓÎĵµ¡£²»¹ÜÊÇÔÚC++»¹ÊÇFOALÖеĽű¾ÖУ¬CMarkup¶¼Ê¹Ëü±äµÃ¼òµ¥¡£¶ÔÓںܴóµÄXMLÎĵµ£¬ÔÚÌáÈ¡×ÓÎĵµÊÇʹÓÃCMarkup¶ÁÈ¡Îļþģʽ¾Í¿ÉÓúÜÉÙµÄÄÚ´æ¶ÁÈ¡Ëü¡£
¹Ø¼üÎÊÌâÊÇ£¬µ±Äã·Ö¸îXMLÎĵµÊ±ÄãÏëÔÚÄǸöµØ·½·Ö¸î£¿¿ÉÒÔÊÇÒ»¸öºÏºõ ......
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
imp ......
ÕâÊÇÒ»¸öÓÃc#¿ØÖÆÌ¨³ÌÐòÏ£¬ ÓÃXmlDocument ½øÐÐXML²Ù×÷µÄµÄÀý×Ó£¬°üº¬Á˲éѯ¡¢Ôö¼Ó¡¢Ð޸ġ¢É¾³ý¡¢±£´æµÄ»ù±¾²Ù×÷¡£½ÏÍêÕûµÄÃèÊöÁËÒ»¸öXMLµÄÕû¸ö²Ù×÷Á÷³Ì¡£ÊʺϸÕÈëÃÅ.net XML²Ù×÷µÄÅóÓѲο¼ºÍѧϰ¡£
¼ÙÉèÓÐXMLÎļþ£ºbooks.xml
Xml´úÂ룺
<?xml version="1.0" encoding="UTF-8"?>
<books>
< ......
1¡¢±£Ö¤Äã´«µÝµÄ²ÎÊýÒªÕýÈ·£ºC++ÖеÄchar *¶ÔÓ¦PASCALÖеÄpchar¡£
2£ºC++Öе¼³öµÄº¯ÊýµÄ²ÎÊýµ÷Ó÷½Ê½ÒªºÍÄãDELPHIÖеĵ¼ÈëµÄº¯Êý²ÎÊýµ÷Ó÷½Ê½ÒªÒ»ÖÂ!
ÀýÈ磺 C++µÄ²ÎÊýµ÷Ó÷½Ê½ ¶ÔÓ¦µÄDELPHIµÄ²ÎÊýµ÷Ó÷½Ê½
_declspec ......