百分求教,一个XML查询的问题
有这样一个XML文件,如下,片断
<folder>
<ident value= "help "/>
<title> 在线帮助 </title>
<description/>
<keyword> 成绩管理,学籍管理,教师管理,教务管理,学生管理,通知,部门设置,备课系统,授权,收回权限,邮件系统,设备维修 </keyword>
<!-- End of school basic info management -->
<folder>
<ident value= "master/mainfunc.aspx?id=1 "/>
<title> 学校基本信息管理 </title>
<description> 维护学校的基本信息(如学校名称、学校代号、学校性质、学校地址、学校概况等)以及部门设置信息。 </description>
<keyword> 学校,基本信息,学校基本信息,信息管理,管理 </keyword>
<!-- Beginning of school settings -->
<folder>
<ident value= "admin/school/schoolframe.aspx "/>
<title> 学校设置 </title>
<description> 维护或查看学校的基本信息,如学校名称、学校代号、学校性质、学校地址、学校概况等。提供整个系统所需要的基础数据框架。 </description>
<keyword> 学校设置,学校,设置 </keyword>
<function>
<ident value= "admin/school/update.aspx "/>
<name> 维护学校设置 </name>
<description> 输入或修改学校的基本信息,如学校名称、学校代号、学校性质、学校地址、学校概况等。 </description>
<keyword> 维护学校设置,维护 </keyword>
<path> 学校基本信息管理->学校设置->维护学校设置 </path>
<step> 在标题栏单击“维护学校设置”按钮或在主窗口单击“维护学校设置”链接。 </step>
<step> 在“学校名称”输入框里输入学校的名称。 </step>
<step> 在“学校代号”输入框里输入学校的代号。 </step>
<step> 单击“学校性质”选择表单,然后在弹出的表单中单击所需选项。 </step>
<step> 单击“学校类型”选择表单,然后在弹出的表单中单击所需选项。 </step>
<step> 单击“学校等级”选择表单,然后在弹出的表单中单击所需选项。 </step>
<step> 如果学校是职校,请单击“是”单选按钮。 </step>
<step> 在“学校地址”输入框里输入学校的地址。 </step>
<step> 在“学校邮编”输入框里输入学校的邮编。 </step>
<step> 在“学校总机”输入框里输入学校的总机电话号码。 </step>
<step> 如果有学校的照片,请单击“图片上载”输入框后面的“浏览...”按钮,系统弹出一个“选择文件”对话框。找到所需的文件然后双击之或单击之再单击“打开”按钮。 </step>
<step> 在“学校概况”输入框里输入学校的概况。 </step>
<step> 如果要保存,请单击“提交”按钮;如果要重新填写,可单击“重 写”按钮,然后参照前面步骤重新填写。 </step>
<attention> 除了“图片上载”可不输入外,其它项必须输入。 </attention>
<attention> 上传的图片文件类型必须为gif格式、大小不能超过400KB,图片的尺寸必须为400×60象素。 </attention>
</function>
<function>
<ident value= "admin/school/display.aspx "/>
<name> 查看学校设置 </name>
<description> 查看学校的基本信息,如学校名称、学校代号、学校性质、学校地址、学校概况等。这些信息来自于“维护学校设置”功能的输入。 </description>
<keyword> 查看,查看学校设置 </keyword>
<path> 学校基本信息管理->学校设置->查看学校设置 </path>
<step> 在标题栏单击“查看学校设置”按钮或在主窗口单击“查看学校设置”链接。 </step>
</function>
</folder>
.............
我如何输入master/mainfunc.aspx?id=1这个参数,得到
如下的片断
<title> 学校设置 </title>
<description> 维护或查看学校的基本信息,如学校名称、学校代号、学校性质、学校地址、学校概况等。提供整个系统所需要的基础数据框架。 </description>
<keyword> 学校设置,学校,设置 </keyword>
<function>
<ident value= "admin/school/update.aspx "/>
<name> 维护学校设置 </name>
<description> 输入或修改学校的基本信息,如学校名称、学校代号、学校性质、学校地址、学校概况等。 </description>
<keyword> 维护学校设置,维护 </keyword>
<path> 学校基本信息管理->学校设置->维护学校设置 </path>
<step> 在标题栏单击“维护学校设置”按钮或在主窗口单击“维护学校设置”链接。 </step>
<step> 在“学校名称”输入框里输入学校的名称。 </step>
<step> 在“学校代号”输入框里输入学校的代号。 </step>
<step> 单击“学校性质”选择表单,然后在弹出的表单中单击所需选项。 </step>
<step> 单击“学校类型”选择表单,然后在弹出的表单中单击所需选项。 </step>
<step> 单击“学校等级”选择表单,然后在弹出的表单中单击所需选项。 </step>
<step> 如果学校是职校,请单击“是”单选按钮。 </step>
<step> 在“学校地址”输入框里输入学校的地址。 </step>
<step> 在“学校邮编”输入框里输入学校的邮编。 </step>
<step> 在“学校总机”输入框里输入学校的总机电话号码。 </step>
<step> 如果有学校的照片,请单击“图片上载”输入框后面的“浏览...”按钮,系统弹出一个“选择文件”对话框。找到所需的文件然后双击之或单击之再单击“打开”按钮。 </step>
<step> 在“学校概况”输入框里输入学校的概况。 </step>
<step> 如果要保存,请单击“提交”按钮;如果要重新填写,可单击“重 写”按钮,然后参照前面步骤重新填写。 </step>
<attention> 除了“图片上载”可不输入外,其它项必须输入。 </attention>
<attention> 上传的图片文件类型必须为gif格式、大小不能超过400KB,图片的尺寸必须为400×60象素。 </attention>
在asp.net(c#)中,请高手帮忙,最好详细一些,不要给我这个类那个方法的,我看不太明白,呵呵
[解决办法]
string _key = "master/mainfunc.aspx?id=1 ";
XmlDocument _xmldoc = new XmlDocument();
_xmldoc.Load(Server.MapPath( "XMLFile.xml "));
XmlNode _oNode = _xmldoc.SelectSingleNode( "//folder[../ident/@value= ' "+_key+ " '] ");
if (_oNode != null)
{
Response.Write( " <xmp> ");
Response.Write(_oNode.OuterXml);
Response.Write( " </xmp> ");
}
else
{
Response.Write( "没有找到! ");
}
[解决办法]
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.XPath;
namespace ARM.XMLReader
{
class Program
{
static void Main(string[] args)
{
XPathDocument document = new XPathDocument(@ "E:\help.xml ");
XPathNavigator navigator = document.CreateNavigator();
string id = "[ident/@value=\ " " + "master/mainfunc.aspx?id=121 " + "\ "] ";//这里处理一下,把中间的链接换一下
string folder = "sms/help/folder ";
XPathNodeIterator nodes = navigator.Select(folder + id);
Console.WriteLine( "Finding nodes... ");
while(nodes.Count == 0 & folder.Length <= 50)
{
folder = folder + "/folder ";
nodes = navigator.Select(folder + id);
}
while(nodes.MoveNext())
{
Console.WriteLine( "Tag:{0}\nxml:{1} " , nodes.Current.Name , nodes.Current.InnerXml);
}
Console.WriteLine( "Press any key to exit... ");
Console.ReadKey();
return;
}
}
}
这个可以取出包含 <ident value= "master/mainfunc.aspx?id=121 "> 的所有folder节点