½«XMLÊý¾ÝÌî³äµ½TreeViewÖÐ
Îĵµ¼°´úÂëÏÂÔØ£ºhttp://www.dingos.cn/index.php?topic=1899.0
½éÉÜ
µ±²Ëµ¥ÏîÊǾ³£¸Ä±äʱ£¬´ÓXMLÎĵµÖд´½¨TreeView²Åµ±ÊǷdz£ÓÐÓõġ£ÀýÈ磬ʹÓÃXML×÷ΪÊý¾Ý¿â´æ´¢¼Ç¼¡£
ÕâÀïÓиö¼òµ¥Ê¾Àý¡£ÒÔ·À»ìÏýÕâ¸öÀý×ӱȽϼòµ¥¡£
±³¾°
¶ÔXML¡¢TreeView¿Ø¼þµÄÓ¦Óã¬ÔÚVisual StudioÖÐÓÐÖúÓÚÀí½âÕâЩ²½Öè¡£
ʹÓôúÂë
×¢Ò⣺Õâ¸ö½â¾ö·½°¸£¨xml2treeviewmenuSolution£©ÊÇVS2010´´½¨¡£
Ìí¼ÓÒ»¸öXMLÎļþµ½ÏîÄ¿Öв¢ÃüÃûΪ“menu.xml”¡£¸ù¾Ý²Ëµ¥Ïî±à¼XMLÎļþ¡£
<?xml version="1.0" encoding="utf-8" ?>
<root>
<folder title='folder 1a' >
<record title='record 1a1' />
<record title='record 1a2' />
<folder title='folder 1b'>
<record title='record 1b1' />
</folder>
</folder>
<folder title='folder 2a' >
<record title='record 2a1' />
</folder>
<folder title='folder 3a' >
<record title='record 3a1' />
<record title='record 3a2' />
</folder>
</root>
´ÓVisual
Studio¹¤¾ßÏäÖн«TreeView¿Ø¼þÍÏÈëWindows´°ÌåÖС£ÔÚÕâ¸öÀý×Ó£¬ÃüÃû¿Ø¼þΪ“treeViewMenu”¡£Ê¹ÓÃusingÌí¼Ó¶ÔXMLÀàµÄÒýÓá£
using System.Xml;
using System.Xml.XPath;
´´½¨Ò»¸öXMLDocument¶ÔÏóÓÃÓÚ±£´æÎļþ¡£
public partial class Form1 : Form{
private XmlDocument docXML = new XmlDocument();
µ±´°Ìå¼ÓÔØÊ±£¬´ÓXMLÎļþÖмÓÔØÌî³äTreeView¿Ø¼þµÄXMLÎĵµ¡£
private void Form1_Load(object sender, EventArgs e){
docXML.Load("menu.xml"); // ¼ÓÔØXMLÎļþ
populateBaseNodes(); // Ìî³äËùÓиù½Úµã
}
´ÓµÚÒ»¼¶<folder>½Úµã¿ªÊ¼Ìî³ä¡£½«Ã¿¸ö¸ù½ÚµãÌí¼Óµ½Ê÷ÖУ¬²¢Îªµ±Ç°¸ù¾ÝµãÌí¼Ó×ӽڵ㡣
private void populateBaseNodes(){
treeViewMenu.Nodes.Clear(); // Çå³þÒÑ´æÔÚµÄÏî
treeViewMenu.BeginUpdate(); // ¿ªÊ¼¸üÐÂTreeView
TreeNode treenode;
treenode = treeViewMenu.Nodes.Add("Folders");
XmlNodeList baseNodeList = docXML.SelectNodes("root/folder");
// »ñµÃµÚÒ»²ã <folder> ½Úµã
foreach (XmlNode xmlnode in baseNodeList){
// ±äÁ¿ËùÓеĸù½Úµã <
Ïà¹ØÎĵµ£º
µÚÒ»ÖÖ·½Ê½--ʹÓÃMSXML2.DOMDOCUMENT.4.0
´´½¨xmldoc¶ÔÏ󣬲¢×°ÔØÒ»¸öxml
Set xmldoc = CreateObject("MSXML2.DOMDOCUMENT.4.0")
xmldoc.loadXML ("Ò»¸ö¾ßÌåµÄXMLʵÌå")
Ñ¡ÔñÐèҪɸѡµÄ½áµã
Set nodeList = xmldoc.selectNodes("//*[count(ancestor::*)= 2]") '¸ù½ÚµãµÄµÚ¶þ´úºó´ú
Set nodeList = xmldoc ......
XML(eXtensible Markup Language)ÊÇÍòÎ¬ÍøÁªÃË(World Wide Web Consortium W3C)¶¨ÒåµÄÒ»ÖÖ¿ÉÀ©Õ¹±êÖ¾ÓïÑÔ¡£
¿ÉÀ©Õ¹ÐÔÖ¸ÔÊÐíÓû§°´ÕÕXML¹æÔò×Ô¶¨Òå±ê¼Ç(tags ±êÇ©)¡£
Ç¿ÏÇáËɱí´ï¶à²ã½á¹¹µÄÊý¾Ý£»¿ÉÀ©Õ¹¡£
Óŵ㣺ƽ̨Î޹أ¬ÓïÑÔÎ޹ء£Éè¼ÆÄ¿±êÊÇÃèÊöÊý¾Ý²¢¼¯ÖÐÓÚÊý¾ÝµÄÄÚÈÝ£¬ÓëÏÔʾ·ÖÀë¡£
ÌáÐÑ£º² ......
ÎÒÏë·ÃÎÊxmlµ±ÖÐijЩÊý¾Ý£¬»òÕßÊÇÏ£ÍûÓиö°´Å¥ÓиöÊäÈëÎı¾µã»÷°´Å¥ºó¹ýÂ˵ôÊäÈëÎı¾µÄÄÚÈÝ£¬¸ÃÈçºÎ×ö£¿
XMLListCollectionÖеĹýÂ˺¯Êý¿ÉÒÔ°ïÎÒÃÇ×öµ½Õâµã£¡Ê¾ÀýµÄ¹Ø¼üº¯ÊýÈçÏ£¬ÖÁÓÚxmlÓÐÐËȤµÄÅóÓÑ×Ô¸öд
import mx.collections.XMLListCollection;
protected var col:XMLListCollection;
protected var menuI ......
1. ¾ßÓÐÁ¼ºÃµÄ¸ñʽ
XML Îĵµ¸ñʽÊôÓÚÁ¼ºÃ¸ñʽµÄÎļþ¡£HTML ÎļþÖеıê¼Ç£¬ÓÐЩÊDz»ÐèÒª½áβ±ê¼ÇµÄ£¬Èç<br>£¬ÓÐÐ©ÍøÒ³È±ÉÙÈô¸É½áβ±ê¼Ç£¬ÕÕÑùÄÜÕýÈ·ÏÔʾ¡£¶øXML µÄ±ê¼ÇÒ»¶¨ÒªÓµÓнáβ±ê¼Ç£¬ÀýÈ磺
<name>ÕÅÈý</name>
¼´£¬XML ±ê¼ÇÒ»¶¨ÊdzÉË«³É¶ÔµÄ¡£Èç¹ûûÓнáβ±ê¼Ç£¬ÄÇôÔÚ½áÊøµÄ“>”Ç ......
// TestXml.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include "tinyxml.h"
#include "lang.h"
#include <string>
using namespace std;
using namespace std;
#pragma comment(lib, "tinyxmld.lib")
B ......