视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ASP.NET中的XML表单控件_MySQL
2020-11-09 17:06:03 责编:小采
文档


导 读:介绍了有关ASP.NET中XML控件的使用,有个小BUG:在WEBFORM.ASPX中出现的XML控件,其中的transformsource属性设定了样式表文件路径,可是在文章出处没有找到这个XSL文件.:( 自己解决吧.
--------------------------------------------------------------------------------
在这个代码中揭示了微软在ASP.NET架构中隐藏的一个WEB表单控件,即,我只给代码,不给解释,大家自己下课后去研究吧。
另外,由于是beta1,在这个控件中你使用的xslt里面不能使用,当然,亦不能使用那个order-by了,因为它支持的xsl空间是带"1999"的那个,而不是原来的那个。
另外,我从微软得到的回答就是在beta2里面,它将支持,就可以全部转向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("


"+ exp.Message+"
");

}

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("
"+ exp.Message+"
");

}

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("rn");

}



// 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("rn");

}



// ********************************** 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("rn");

}



/// ************************* 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("rn");

}

}

}





下面就是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" %>









// Put page script here

public void On_KeyUp(object sender, System.EventArgs e)

{

Response.Write("Works");

}









test

















下载本文
显示全文
专题