请问一个。net取xm里面数据的问题!!在线等候。。。

vinjian 2003-10-17 03:57:00
我建了一个。net application 并添加了一个new item(xml文件)用保存了信息的;另外添加了一个(xslt文件),用它来转换xml输出形式!

  现在我想在aspx页面里面把符合某个条件的信息从xml中输出来,我想分别在客户端和服务器端去实现,那这两种情况下的代码该怎么写呢??
下面是xml和xslt两个文件的代码:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="books.xsl" ?>
<books>
<book>
<isbn>001</isbn>
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book>
<isbn>002</isbn>
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book>
<isbn>003</isbn>
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</books>

————————————————————————————————————
<?xml version="1.0" encoding="UTF-8" ?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>isbn</th>
<th>title</th>
<th>author</th>
<th>price</th>
</tr>
<xsl:for-each select="books/book">
<tr>
<td><xslt:value-of select="isbn" /></td>
<td><xslt:value-of select="title" /></td>
<td><xslt:value-of select="author" /></td>
<td><xslt:value-of select="price" /></td>
</tr>
</xsl:for-each>
</table>
</body>

</html>
</xsl:template>
</stylesheet>
...全文
55 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vinjian 2003-10-17
  • 打赏
  • 举报
回复
当isbn为空值的时候,就不能抛出异常了,出现错误!!!!
vinjian 2003-10-17
  • 打赏
  • 举报
回复
呵呵,谢谢!!
lazybat 2003-10-17
  • 打赏
  • 举报
回复
你可以用
try{
DataSet dsBook=new DataSet();
string strXmlFile=Server.MapPath("")+"\\books.xml";
dsBook.ReadXml(strXmlFile,XmlReadMode.InferSchema);
string select="isbn="+isbn.Text;
DataRow[] findrow;
findrow=dsBook.Tables[0].Select(select);
lab1.Text=findrow[0][0].ToString();

}
catch
{
自定义的错误代码
}
vinjian 2003-10-17
  • 打赏
  • 举报
回复
lazybat(迷惑)

用你给的代码如果我查找的不是xml里面包含的信息的时候就报错,例如我的book有三个元素isbn分别是001、002、003,当我要查找004的时候就出现错误,isbn是textbox
DataSet dsBook=new DataSet();
string strXmlFile=Server.MapPath("")+"\\books.xml";
dsBook.ReadXml(strXmlFile,XmlReadMode.InferSchema);
string select="isbn="+isbn.Text;
DataRow[] findrow;
findrow=dsBook.Tables[0].Select(select);
lab1.Text=findrow[0][0].ToString();
lazybat 2003-10-17
  • 打赏
  • 举报
回复
vinjian(vincent_chen)
第一个例子里,比如你建立了一个aspx文件book.aspx,里面有2个label控件分别是
label label2
你的访问条件用book.aspx?no=书名
你直接用上面的代码放在Page_Load里就可以了,把你的book.xml文件放在同一目录下,或者你自己改这行string strXmlFile=Server.MapPath("")+"\\book.xml";




lazybat 2003-10-17
  • 打赏
  • 举报
回复
我给的是一种方法而已,还有可以使用xml.XPathDocument对象来实现,看如下代码
using System.Xml;
using System.Xml.XPath;

XPathDocument Doc = new XPathDocument("emp.xml");
XPathNavigator navigator = Doc.CreateNavigator();
XPathNodeIterator iterator = navigator.Select("/employees/employee");
while (iterator.MoveNext())
{
Console.WriteLine(iterator.Current.Name);
Console.WriteLine(iterator.Current.Value);
}
cuike519 2003-10-17
  • 打赏
  • 举报
回复
lazybat(迷惑) 的方法是将XML装载到DataSet里面操作的!在ASP.NET里面XML=DataSet!
cuike519 2003-10-17
  • 打赏
  • 举报
回复
直接装载到DataSet里面也可以!但是用下面的方法也不错!

http://msdn.microsoft.com/library/en-us/cpguide/html/cpconreadingxmlwithxmlreader.asp?frame=true
如果要编辑的话那么就参考:
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconxmldocumentobjectmodeldom.asp?frame=true
vinjian 2003-10-17
  • 打赏
  • 举报
回复
能不能具体一些啊!谢谢了
lazybat 2003-10-17
  • 打赏
  • 举报
回复
DataSet dsBook=new DataSet();
string strXmlFile=Server.MapPath("")+"\\book.xml";
dsBook.ReadXml(strXmlFile,XmlReadMode.InferSchema);
string select="title="+Request.QueryString["no"];
DataRow[] findrow;
findrow=dsBook.Tables[0].Select(select);
label.Text=findrow[0][1].ToString();
label2.Text=findrow[0][2].ToString();

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧