动态操作XML+XSL 生成HTML
原理:
1.Xml用来定义数据,
<狼人>
<动作>嚎叫</动作>
<参照物>满月<参照物>
</狼人>
2.XSLT用来当做页面模板显示数据<xsl:stylesheet version="1.0">
<xsl:output method="html"/>
<html>
<head>
<title>生化危机</title>
</head>
<body>
狼人:<xsl:value-of select="狼人/动作"/> <!-- 从Xml节点取Node的值:嚎叫-->
</body>
<html>
</xsl:stylesheet>
3.动态操作XML原理: 将Xml文件加载到 XmlDocument内,再遍历操作节点,然后将 Document保存在 MemoryStream 内,用 XmlReader 读取即可。
XmlDocument xmlDoc= *.Load(xmlFilePath); //xml文件加载
node=xmlDoc.selectSingleNode("No") //按节点 顺序访问
node.innerText="lalala"; //操作节点值
MemoryStream xmlStream=new MemoryStream(); //创建用来暂存更改后的Xml文件的内存流
xmlDoc.Save(xmlStream); //将更改后文件保存到内存流
xmlStream.Seek(0,SeekOrigin.Begin); //将内存流指针指向第一位,使xmlReader 可以正确从头开始读取
XmlReader xmlReader=XmlReader.Create(xmlStream); //用XmlReader读取
//Xsl操作
XmlReader xslReader=XmlReader.Create("XslFilePath"); //读取XSL也用 XmlReader
//XmlTextWriter 用于将生成后的html写入对象(MemoryStream)
MemoryStream writerStream=new MemoryStream(); //用于暂存生成的html的内存流
XmlTextWriter xmlWriter=new (writerStream,Encoding.xx); //用于将生成的html写入内存流
XslCompiledTransform xslTransform=new XslCompiledTransform(); //用于将XSL和XML XXOO
xslTransform.Load(xslReader); //先加载XSL
xslTransform.Transform(xmlReader,xmlWriter); //XSL和XML XXOO 后将通过XmlTextWriter 写入内存流 writerStream
StreamReader sr=new (writerStream); //用于从writerStream中读取数据
writerStream.Seek(0,SeekOrigin.Begin); //将内存流的查找指针放置第一位
string htmlContent=sr.ReadToEnd(); //读取内存中的html
参考XSL基础教程
http://www.ibm.com/developerworks/cn/xml/ccidnet/xslfund/index1.html
http://www.w3school.com.cn/xsl/el_value-of.asp