http://weddingin2008.html.533.net/menu.jpg
其中文件这一菜单项在xml文件的内容是:
<MenuItem Label="文件" CssClass="TopMenuItem" CssClassOver="TopMenuItemOver">
<MenuGroup>
<MenuItem Label="新建" LeftIcon="icon_new.gif" LeftIconOver="icon_new_over.gif" LeftIconWidth="20"
ID="i_new" />
<MenuItem Label="打开" LeftIcon="icon_open.gif" LeftIconOver="icon_open_over.gif" RightIcon="arrow_right.gif"
RightIconWidth="15">
<MenuGroup>
<MenuItem Label="Project" LeftIcon="icon_project.gif" LeftIconOver="icon_project_over.gif"
LeftIconWidth="20" ID="i_project" />
<MenuItem Label="Project From Web" LeftIcon="icon_projectFromWeb.gif" LeftIconOver="icon_projectFromWeb_over.gif"
ID="i_projectWeb" />
<MenuItem Label="File" LeftIcon="icon_file.gif" LeftIconOver="icon_file_over.gif" ID="i_file" />
<MenuItem Label="File From Web" LeftIcon="icon_fileFromWeb.gif" LeftIconOver="icon_fileFromWeb_over.gif"
ID="i_fileWeb" />
</MenuGroup>
</MenuItem>
<MenuItem Label="Close" URL="demo.aspx?id=5" />
<MenuItem Image="gray.gif" Height="1" Width="110" CssClass="MenuBreak" CssClassOver="MenuBreak" />
<MenuItem Label="Add New Item" LeftIcon="icon_addNewItem.gif" LeftIconOver="icon_addNewItem_over.gif"
LeftIconWidth="20" ID="i_addNewItem" />
<MenuItem Label="Add Existing Item" LeftIcon="icon_addExistingItem.gif" LeftIconOver="icon_addExistingItem_over.gif"
ID="i_addExistingItem" />
<MenuItem Image="gray.gif" Height="1" Width="110" CssClass="MenuBreak" CssClassOver="MenuBreak" />
<MenuItem Label="Open Solution" LeftIcon="icon_openSolution.gif" LeftIconOver="icon_openSolution_over.gif"
ID="i_openSolution" />
<MenuItem Label="Close Solution" LeftIcon="icon_closeSolution.gif" LeftIconOver="icon_closeSolution_over.gif"
ID="i_closeSolution" />
</MenuGroup>
</MenuItem>
其中文件这一菜单项在xml文件的内容是:
<MenuItem Label="文件" CssClass="TopMenuItem" CssClassOver="TopMenuItemOver">
<MenuGroup>
<MenuItem Label="新建" LeftIcon="icon_new.gif" LeftIconOver="icon_new_over.gif" LeftIconWidth="20"
ID="i_new" />
<MenuItem Label="打开" LeftIcon="icon_open.gif" LeftIconOver="icon_open_over.gif" RightIcon="arrow_right.gif"
RightIconWidth="15">
<MenuGroup>
<MenuItem Label="Project" LeftIcon="icon_project.gif" LeftIconOver="icon_project_over.gif"
LeftIconWidth="20" ID="i_project" />
<MenuItem Label="Project From Web" LeftIcon="icon_projectFromWeb.gif" LeftIconOver="icon_projectFromWeb_over.gif"
ID="i_projectWeb" />
<MenuItem Label="File" LeftIcon="icon_file.gif" LeftIconOver="icon_file_over.gif" ID="i_file" />
<MenuItem Label="File From Web" LeftIcon="icon_fileFromWeb.gif" LeftIconOver="icon_fileFromWeb_over.gif"
ID="i_fileWeb" />
</MenuGroup>
</MenuItem>
<MenuItem Label="Close" URL="demo.aspx?id=5" />
<MenuItem Image="gray.gif" Height="1" Width="110" CssClass="MenuBreak" CssClassOver="MenuBreak" />
<MenuItem Label="Add New Item" LeftIcon="icon_addNewItem.gif" LeftIconOver="icon_addNewItem_over.gif"
LeftIconWidth="20" ID="i_addNewItem" />
<MenuItem Label="Add Existing Item" LeftIcon="icon_addExistingItem.gif" LeftIconOver="icon_addExistingItem_over.gif"
ID="i_addExistingItem" />
<MenuItem Image="gray.gif" Height="1" Width="110" CssClass="MenuBreak" CssClassOver="MenuBreak" />
<MenuItem Label="Open Solution" LeftIcon="icon_openSolution.gif" LeftIconOver="icon_openSolution_over.gif"
ID="i_openSolution" />
<MenuItem Label="Close Solution" LeftIcon="icon_closeSolution.gif" LeftIconOver="icon_closeSolution_over.gif"
ID="i_closeSolution" />
</MenuGroup>
</MenuItem>
谁能告诉我怎么写啊?
1. XML 文档操作
1.1 加载一个XML文档
Dim objDoc As New XmlDocument()
'-- Load xml document Sample.xml
objDoc.Load("Sample.xml")
1.2 加载一个XML数据
Dim objDoc As New XmlDocument()
Dim strXML As String
strXML = "<Employees><Employee id=”12345”><Employee_ID>12345</Employee_ID><Name>Zhang Bin</Name></Employee></Employees>"
'-- Load xml data
objDoc.Load(strXML)
1.3 保存文档
'—Save xml document
objDoc.Save("Sample.xml")
2 XML 数据的查询
最常见的XML数据类型有:Element, Attribute,Comment, Text.
Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
Attribute, 指在<Employee id=”12345”>中的粗体部分。
Comment,指形如:<!-- my comment --> 的节点。
Text,指在<Name>Tom<Name>的粗体部分。
在XML中,可以用XmlNode对象来参照各种XML数据类型。
2.1 查询已知绝对路径的节点(集)
objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”)
或者
objNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”)
以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如:
objNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
If Not (objNode is Nothing) then
‘- Do process
End If
2.2 查询已知相对路径的节点(集)
可使用类似于文件路径的相对路径的方式来查询XML的数据
objNode = objDoc.SelectSingleNode(“Company/Department”)
objNodeList = objNode.SelectNodes(“../Department)
objNode = objNode.SelectNode(“Employees/Employee”)
2.3 查询已知元素名的节点(集)
在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
objNodeList = objDoc.SelectNodes(“Company//Employee”)
2.4 查询属性(attribute)节点
以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”)
objNodeList = objDoc.SelectNodes(“Company//@id”)
2.5 查询Text节点
使用text()来获取Text节点。
objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)
2.6 查询特定条件的节点
使用[]符号来查询特定条件的节点。例如:
a. 返回id号为 10102的Employee节点
objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)
b. 返回Name为Zhang Qi的Name 节点
objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”)
c. 返回部门含有职员22345的部门名称节点
objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
2.7 查询多重模式的节点
使用 | 符号可以获得多重模式的节点。例如:
objNodeList = objDoc.SelectNodes(“Company/Department/Department_Name | Company/Department/Manager”)
2.8 查询任意子节点
使用*符号可以返回当前节点的所有子节点。
objNodeList = objDoc.SelectNodes(“Company/*/Manager)
或者
objNodeList = objNode.ChildNodes
3 XML数据的编辑
3.1 增加一个元素的属性(attribute)节点
Dim objNodeAttr As XmlNode
objNodeAttr = objDoc.CreateAttribute("id", Nothing)
objNodeAttr.InnerXml = "101"
objNode.Attributes.Append(objNodeAttr)
3.2 删除一个元素的属性
objNode.Attributes.Remove(objNodeAttr)
3.3 增加一个子元素(Element)
Dim objNodeChild As XmlNode
objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing)
objNodeChild.InnerXml = "101"
objNode.AppendChild(objNodeChild)
3.4 删除一个子元素
objNode.RemoveChild(objNodeChild)
3.5 替换一个子元素
objNOde.ReplaceChild(newChild,oldChild)
<MenuItem Label="采购" CssClass="TopMenuItem" CssClassOver="TopMenuItemOver">
<MenuGroup>
<MenuItem Label="包装部品" LeftIcon="folderopen.gif" LeftIconOver="folderopen.gif" LeftIconWidth="20"
ID="i_new" />
<MenuItem Label="五金电子间接材料" LeftIcon="folderopen.gif" LeftIconOver="folderopen.gif" RightIcon="arrow_right.gif"
RightIconWidth="15">
<MenuGroup>
<MenuItem Label="采购部品到货(变更)联络表-五金、电子、辅料" LeftIcon="excel.gif" LeftIconOver="excel.gif"
LeftIconWidth="20" ID="i_project" URL="http://www.tom.com" URLTarget="main"/>
</MenuGroup>
</MenuItem>
<MenuItem Label="www.tom.com" LeftIcon="html.gif" LeftIconOver="html.gif" URL="http://www.tom.com" URLTarget="main"></MenuItem>
</MenuGroup>
</MenuItem>
{
XmlDocument xmldoc=new XmlDocument();
xmldoc.AppendChild(xmldoc.CreateProcessingInstruction("xml","version=\"1.0\""));
xmldoc.AppendChild(xmldoc.CreateElement("gxsti-news"));
XmlNode news=xmldoc.DocumentElement.AppendChild(xmldoc.CreateElement("news"));
buildXmlTree("d:\\Windows CE Tools",xmldoc,news);
}
private bool get_Type(string route)
{
if(Path.GetExtension(route)!=null)
return true;//判断该目录下是否有子目录
else
return false;
}
private void buildXmlTree(string route,XmlDocument xmldoc,XmlNode newsitem)
{
string[] str=Directory.GetDirectories(route);//文件夹
string[] file=Directory.GetFiles(route);//文件
for(int i=0;i<file.Length;i++)
{
XmlNode item=newsitem.AppendChild(xmldoc.CreateElement("item"));
XmlNode filetype=item.AppendChild(xmldoc.CreateElement("filetype"));
filetype.InnerText="1";//文件类型
XmlNode filename=item.AppendChild(xmldoc.CreateElement("filename"));
filename.InnerText=file[i].Substring(file[i].LastIndexOf("\\")+1,file[i].Length-file[i].LastIndexOf("\\")-1);//文件名称
}
for(int i=0;i<str.Length;i++)
{
if(get_Type(str[i]))
{
XmlNode item=newsitem.AppendChild(xmldoc.CreateElement("item")); XmlNode filetype=item.AppendChild(xmldoc.CreateElement("filetype"));
filetype.InnerText="0";//文件夹类型
XmlNode filename=item.AppendChild(xmldoc.CreateElement("filename"));
filename.InnerText=str[i].Substring(str[i].LastIndexOf("\\")+1,str[i].Length-str[i].LastIndexOf("\\")-1);//文件夹名称
buildXmlTree(str[i],xmldoc,item);
}
}
XmlTextWriter writer=new XmlTextWriter("d:\\index.xml",null);
writer.Formatting=Formatting.Indented;
writer.Indentation=1;
writer.IndentChar='\t';
xmldoc.WriteTo(writer);
writer.Close();
}
//将程序考到相应位置就可以用了,记得添加using System.IO;using System.Xml;两个命名空间,跟搂主所要的还有点出入,自己修改一下吧,我只是做个测试而已,至于属性的添加参考以下代码:
XmlNode newsitem=newsitems.AppendChild(xmldoc.CreateElement("newsitem"));
XmlAttribute newstype=xmldoc.CreateAttribute("newstype");
newstype.Value=ds.Tables[0].Rows[i]["id"].ToString();
((XmlElement)newsitem).SetAttributeNode(newstype);