选择显示字体大小

开心就贴(四)

呵呵,有意思,听过一个笑话,说德国一个老头,是个聋子,在如厕时,突然苏联战机空袭,虽然房屋倒塌,可是全家人都没有事情,家里人扒开卫生间的墙壁,发现老头在那儿乐,说:我一拉抽水马桶的绳,屋就倒了。
哈哈哈,我也是这样,刚才我一发这贴子,chinaasp就完了,还以为是我的事情呢,原来是苏联飞机来炸了,呵呵。
如果你喜欢玩xml,那么请跟我来,但在此之前,请深呼一口气,因为我给大家介绍一个长代码,在这个代码中揭示了微软在asp.net架构中隐藏的一个web表单控件,即<asp:xml runat=server/>,我只给代码,不给解释,大家自己下课后去研究吧。
另外,由于是beta1,在这个控件中你使用的xslt里面不能使用<xsl:sort>,当然,亦不能使用那个order-by了,因为它支持的xsl空间是带"1999"的那个,而不是原来的那个。
另外,我从微软得到的回答就是在beta2里面,它将支持<xsl:sort>,到那时,哥哥我将全部转向xml+xsl了,现在为源代码保密问题给弄的非常头疼。
请看下例:
webform2.cs
---------------------------------
using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.drawing;
using system.web;
using system.web.sessionstate;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
using system.text;
using system.io;
using system.xml;

public class webform2 : page
{
public stringbuilder outputq;
public stringbuilder outputxml;
public documentnavigator nav = null;
public htmlinputfile xmlfile;

public system.web.ui.webcontrols.xml myxml;

public system.web.ui.webcontrols.textbox textbox1;
public system.web.ui.webcontrols.textbox textbox2;
public system.web.ui.webcontrols.textbox textbox3;
public system.web.ui.webcontrols.button query;
public system.web.ui.webcontrols.label filelabel;

public void on_keyup(object sender, system.eventargs e)
{
response.write("works");
}

protected void page_load(object sender, eventargs e)
{
if (!ispostback)
{
//
// evals true first time browser hits the page
//
}
}

public void query_click(object sender, system.eventargs e)
{
httppostedfile xmlfile = xmlfile.postedfile;
xmldocument doc = new xmldocument();
myxml.document = new xmldocument();
// textbox2.text="";
// textbox3.text="";

if (xmlfile.filename != string.empty)
{
try
{
filelabel.text= xmlfile.filename;

myxml.document.load(xmlfile.filename);
outputxml = new stringbuilder();
xmltextreader reader = new xmltextreader (xmlfile.filename);
showdocument();
textbox3.text = outputxml.tostring();

outputq = new stringbuilder();
doc.load(xmlfile.filename);
documentnavigator nav = new documentnavigator(doc);
// perform the query e.g. "descendant::book/price"
xpathquery(nav, textbox1.text);
textbox2.text = outputq.tostring();

}
catch (exception exp) {
//outputq.append("</xmp><font color=\"#ff6600\">"+ exp.message+"</font><xmp>");
}
finally {}
}
else if (filelabel.text != string.empty)
{
try
{
myxml.document.load(filelabel.text);
outputxml = new stringbuilder();
xmltextreader reader = new xmltextreader (filelabel.text);
showdocument();
textbox3.text = outputxml.tostring();

showdocument();

outputq = new stringbuilder();
doc.load(filelabel.text);
documentnavigator nav = new documentnavigator(doc);
// perform the query e.g. "descendant::book/price"
xpathquery(nav, textbox1.text);
textbox2.text = outputq.tostring();

}
catch (exception exp) {
outputq.append("</xmp><font color=\"#ff6600\">"+ exp.message+"</font><xmp>");
}
finally {}
}
}

private void xpathquery(xmlnavigator navigator, string xpathexpr )
{
try
{
// save context node position
navigator.pushposition();
navigator.select (xpathexpr);
formatxml(navigator);

// restore context node position
navigator.popposition();
}
catch (exception e)
{
}
}

//***************************** navigator ************************************
private void formatxml (xmlnavigator navigator)
{
while (navigator.movetonextselected())
{
switch (navigator.nodetype)
{
case xmlnodetype.processinginstruction:
format (navigator, "processinginstruction");
break;
case xmlnodetype.documenttype:
format (navigator, "documenttype");
break;
case xmlnodetype.document:
format (navigator, "document");
break;
case xmlnodetype.comment:
format (navigator, "comment");
break;
case xmlnodetype.element:
format (navigator, "element");
break;
case xmlnodetype.text:
format (navigator, "text");
break;
case xmlnodetype.whitespace:
format (navigator, "whitespace");
break;
}
}
outputq.append("\r\n");
}

// format the output
private void format (xmlnavigator navigator, string nodetype)
{
string value = string.empty;
string name = string.empty;

if (navigator.haschildren)
{
name = navigator.name;
navigator.movetofirstchild();
if (navigator.hasvalue)
{
value = navigator.value;
}
}
else
{
if (navigator.hasvalue)
{
value = navigator.value;
name = navigator.name;
}
}
outputq.append(nodetype + "<" + name + ">" + value);
outputq.append("\r\n");
}

// ********************************** xmlreader *****************************
public void showdocument ()
{
outputxml = new stringbuilder();
xmltextreader reader = new xmltextreader (filelabel.text);

while (reader.read())
{
switch (reader.nodetype)
{
case xmlnodetype.processinginstruction:
format (reader, "processinginstruction");
break;
case xmlnodetype.documenttype:
format (reader, "documenttype");
break;
case xmlnodetype.comment:
format (reader, "comment");
break;
case xmlnodetype.element:
format (reader, "element");
break;
case xmlnodetype.text:
format (reader, "text");
break;
case xmlnodetype.whitespace:
break;
}
}
textbox3.text = outputxml.tostring();
}

protected void format(xmlreader reader, string nodetype)
{
// format the output
for (int i=0; i < reader.depth; i++)
{
outputxml.append('\t');
}

outputxml.append(reader.prefix + nodetype + "<" + reader.name + ">" + reader.value);

// display the attributes values for the current node
if (reader.hasattributes)
{
outputxml.append(" attributes:");

for (int j=0; j < reader.attributecount; j++)
{
outputxml.append(reader[j]);
}
}
outputxml.append("\r\n");
}

/// ************************* dom *********************************
protected void showdocument(xmlnode node)
{
if (node != null)
format (node);

if (node.haschildnodes)
{
node = node.firstchild;
while (node != null)
{
showdocument(node);
node = node.nextsibling;
}
}
}

// format the output
private void format (xmlnode node)
{
if (!node.haschildnodes)
{
outputxml.append("\t" + "<" + node.value + ">");
}

else
{
outputxml.append("<" + node.name + ">");
if (xmlnodetype.element == node.nodetype)
{
xmlnamednodemap map = node.attributes;
foreach (xmlnode attrnode in map)
outputxml.append(" " + attrnode.name + "<" + attrnode.value + "> ");
}
outputxml.append("\r\n");
}
}
}


下面就是webform2.aspx了
webform2.aspx
-----------------------------------
<%@ import namespace="system" %>
<%@ import namespace="system.io" %>
<%@ assembly name="system.xml" %>
<%@ import namespace="system.xml" %>
<%@ page language="c#" inherits="webform2" src="webform2.cs" debug="true" %>

<html><head>

<script runat="server" language="c#">
// put page script here
public void on_keyup(object sender, system.eventargs e)
{
response.write("works");
}

</script>

<!--<link rel="stylesheet" href="default.css" type="text/css">-->
<title>test</title>
</head>

<body >


<form method="post" action="webform2.aspx" runat="server" enctype="multipart/form-data">

<div align="left">
<table>
<tr>
<td>xml document:</td>
<td><input type=file id="xmlfile" runat=server> filename:</td>
<td><asp:label id="filelabel" runat="server"></asp:label></td>
</tr>

<tr>
<td>xpath expression</td>
<td><asp:textbox id=textbox1 runat="server" height="20" width="300" text=".//text()" onkey_up="on_keyup"></asp:textbox></td>
<td><asp:button type=submit onclick="query_click" runat="server" height="20" width="91" text="query"></asp:button></td>
</tr>
</table>

</br>
<table>
<tr><td>output from query</td><td>xml data</td><tr>
<tr><td>query display: <asp:dropdownlist runat="server">
<asp:listitem>descriptive</asp:listitem>
<asp:listitem>xml</asp:listitem>
</asp:dropdownlist>
</td><tr>
<tr>
<td width="50%" valign="top" align="left"><asp:textbox id=textbox2 runat="server" height="400" width="350" textmode="multiline" rows="10"></asp:textbox></td>
<td width="50%" valign="top" align="left"><asp:xml id="myxml" transformsource="test.xsl" runat=server/></asp:xml></td>
</tr>
</table>
</div>

<td><asp:textbox id=textbox3 runat="server" height="1" width="5" textmode="multiline" rows="110"></asp:textbox></td>

</form>

</body>
</html>

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons