亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

在DotNet里面利用XML

2024-09-05 20:55:51
字體:
來源:轉載
供稿:網友

呵呵,有意思,聽過一個笑話,說德國一個老頭,是個聾子,在如廁時,突然蘇聯戰機空襲,雖然房屋倒塌,可是全家人都沒有事情,家里人扒開衛生間的墻壁,發現老頭在那兒樂,說:我一拉抽水馬桶的繩,屋就倒了。
哈哈哈,我也是這樣,剛才我一發這貼子,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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线精品视频视频中文字幕| 久久久久久久久久久网站| 日本伊人精品一区二区三区介绍| 久久天天躁夜夜躁狠狠躁2022| 国产一区二区三区高清在线观看| 久久成人一区二区| 国产日韩视频在线观看| 亚洲精品国产精品自产a区红杏吧| 亚洲剧情一区二区| 亚洲国产精品久久久久| 97视频在线观看成人| 成人午夜激情网| 欧美综合在线第二页| 日韩国产精品视频| 日韩亚洲第一页| 欧美性猛xxx| 久久久国产视频| 日本免费一区二区三区视频观看| 清纯唯美亚洲综合| 欧美一级视频免费在线观看| 韩国三级电影久久久久久| 成人春色激情网| 国产91精品最新在线播放| 久久久久免费视频| 狠狠久久五月精品中文字幕| 国产日韩在线免费| 北条麻妃久久精品| 91亚洲午夜在线| 欧美激情中文字幕乱码免费| 日韩中文字幕视频在线观看| 中文字幕欧美精品在线| 亚洲天堂网在线观看| 91亚洲永久免费精品| 亚洲精品网址在线观看| 91九色视频导航| 久久免费福利视频| 国产精品视频一区二区三区四| 亚洲自拍欧美另类| 国产精品夫妻激情| 91精品久久久久久久久久久久久| 亚洲国产精久久久久久| 成人黄色av免费在线观看| 欧美成人午夜影院| 日本久久久久久久久久久| 性欧美视频videos6一9| 国产婷婷成人久久av免费高清| 欧美在线视频一二三| 中文字幕av一区二区三区谷原希美| 日韩精品中文字幕视频在线| 精品国产欧美一区二区三区成人| 久久伊人色综合| 日韩精品欧美国产精品忘忧草| 久久亚洲成人精品| 亚洲综合成人婷婷小说| 欧美激情在线播放| 欧美成人亚洲成人日韩成人| 欲色天天网综合久久| 26uuu亚洲伊人春色| 91爱爱小视频k| 国产综合久久久久| 97视频在线观看免费| 国产日韩一区在线| 日韩美女视频中文字幕| 精品爽片免费看久久| 久久6精品影院| 91精品国产免费久久久久久| 国产精品福利无圣光在线一区| 欧美高跟鞋交xxxxhd| 国产在线精品成人一区二区三区| 在线日韩中文字幕| 欧美精品久久一区二区| 91精品国产99| 精品无码久久久久久国产| 欧美巨猛xxxx猛交黑人97人| 日韩欧美成人网| 成人激情av在线| 91福利视频网| 91精品中国老女人| 日韩国产精品亚洲а∨天堂免| 国产日韩欧美在线观看| xxxx性欧美| 欧美电影在线免费观看网站| 欧美华人在线视频| 亚洲一区二区三区在线视频| 狠狠久久五月精品中文字幕| 在线观看亚洲视频| 国产成人精品综合久久久| 欧美精品在线网站| 国产有码一区二区| 国产精品久久久久秋霞鲁丝| 亚洲欧美日韩一区二区三区在线| 欧美精品www| 久久成人人人人精品欧| 日本精品一区二区三区在线| 色偷偷av一区二区三区| 久热精品在线视频| 国产成人一区二区三区| 国产精品十八以下禁看| 国产不卡视频在线| 国产小视频91| 欧美日韩精品在线播放| 久久亚洲精品国产亚洲老地址| 精品视频在线播放| 国产国语videosex另类| 国产亚洲精品成人av久久ww| 亚洲欧美一区二区精品久久久| 国产日本欧美在线观看| 亚洲一区二区福利| 日韩中文在线观看| 奇门遁甲1982国语版免费观看高清| 亚洲综合中文字幕68页| 亚洲精品久久久久国产| 欧美在线视频在线播放完整版免费观看| 亚洲色图13p| 久久久久久久999| 91黑丝在线观看| 一区二区三区天堂av| 欧美性猛交xxxx乱大交| 欧美日韩亚洲精品内裤| 国产一区玩具在线观看| 久久久久久久久综合| 96sao精品视频在线观看| 性视频1819p久久| 久久九九亚洲综合| 国产suv精品一区二区三区88区| 久久久噜噜噜久久中文字免| 国产精品一区二区三| 国产精品com| 91网站在线免费观看| 成人黄色在线观看| 中文在线不卡视频| 国产综合在线视频| 欧美午夜精品伦理| 欧美性jizz18性欧美| 日本午夜在线亚洲.国产| 在线免费看av不卡| 日韩欧美中文在线| 国产aⅴ夜夜欢一区二区三区| 中文国产成人精品久久一| 亚洲人午夜精品免费| 亚洲午夜未满十八勿入免费观看全集| 国产一区二区三区在线观看网站| 久久国产精品免费视频| 成人国产精品免费视频| 欧美日韩在线观看视频小说| 欧美在线观看日本一区| 欧美精品18videos性欧| 亚洲精品国产综合区久久久久久久| 亚洲欧美日韩中文视频| 国产精品精品久久久| 久久久国产精彩视频美女艺术照福利| 国产v综合ⅴ日韩v欧美大片| 日韩美女视频中文字幕| 欧美成年人视频网站| 国产精品自在线| 国产精品精品一区二区三区午夜版| 欧美性高潮床叫视频| 日韩欧中文字幕| 欧美日韩免费在线| 色婷婷成人综合| 中文字幕少妇一区二区三区| 亚洲欧洲自拍偷拍| 欧美性生活大片免费观看网址| 久久久国产成人精品|