datatable datasource(string xmlfile)
{dataset objds = new dataset();
//假设xml文件放在app_data目录下
objds.readxml(httpcontext.current.server.mappath("~/app_data/" + xmlfile));
return objds.tables[0];
}
string getfeildtext(datatable dt, string condition, string outputfieldtext)
{
string result = string.empty;
datarow[] row = dt.select(condition);
if (row.length > 0)
result = row[0][outputfieldtext].tostring();
return result;
}
//假设需求是:根据id找name
string getsexname(string id)
{
string condition = "id= '" + id+ "'";
return getfeildtext(datasource(), condition, "name");
}
下面的代码将使用xmltextreader对象将磁盘文件中的数据读取到xmldocument对象中。xmltextreader对象在功能上和streamreader及binaryreader对象十分相似,只不过它是专为读取xml文件而特别设计的。除此以外,xmltextreader对象还有其他一些与xml相关的特性。例如,代码中使用到的whitespacehandling属性告诉应用程序不要为xml文件中多余的空格建立节点。
下面的代码使用xmltextreader对象的documentelement属性来查找xml文档的树状表达形式的根节点。之后,递归地调用addwithchildren方法将将节点及它的子节点一同添加到listbox中。
下面的代码还包含了属性的处理。属性节点并不包含在一个xmldocument对象的节点的子节点集合中。因而,你只能使用xmlnode对象的attributes属性获得属性节点集合。获取了属性节点集合后,代码使用xmlnamednodemap对象来保存这个集合。这个对象能够保存任何类型的xmlnode对象的任何集合。
代码列表
private void btnload_click(object sender, system.eventargs e)
{
xmltextreader reader = new xmltextreader(
server.mappath("mycompany.xml"));
reader.whitespacehandling = whitespacehandling.none;
xmldocument xmldoc = new xmldocument();
//将文件加载到xmldocument对象中
xmldoc.load(reader);
//关闭连接
reader.close();
//向listbox中添加代表文档的元素
lbnodes.items.add("xml document");
//查找根节点,并将它及它的子节点一同添加到listbox中
xmlnode xnod = xmldoc.documentelement;
addwithchildren(xnod,1);
}
private void addwithchildren(xmlnode xnod, int32 intlevel)
{
//将节点及它的子节点一同添加到listbox中
//intlevel 控制缩进的深度
xmlnode xnodworking;
string strindent = new string(' ',2 * intlevel);
//如果节点有值,读取它的值
string strvalue = (string) xnod.value;
if(strvalue != null)
{
strvalue = " : " + strvalue;
}
//将节点的详细信息添加到listbox中
lbnodes.items.add(strindent + xnod.name + strvalue);
//如果是元素节点,获取它的属性
if (xnod.nodetype == xmlnodetype.element)
{
xmlnamednodemap mapattributes = xnod.attributes;
//将节点属性添加到listbox中
foreach(xmlnode xnodattribute in mapattributes)
{
lbnodes.items.add(strindent + " " + xnodattribute.name +
" : " + xnodattribute.value);
}
//如果还有子节点,就递归地调用这个程序
if(xnod.haschildnodes)
{
xnodworking = xnod.firstchild;
while (xnodworking != null)
{
addwithchildren(xnodworking, intlevel +1);
xnodworking = xnodworking.nextsibling;
}
}
}
}
}
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔