html显示xml文件数据
发布时间:2020-04-22 13:48:12
来源:亿速云
阅读:239
作者:小新
本篇文章和大家了解一下html显示xml文件数据。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
有的时候我们需要在html显示xml,比如我们修改了xml,点击保存,需要在页面显示xml源码,让我们知道xml已经修改了,最好的方法是把xml放到pre元素中,但是会发现没有换行,全部显示一行,肯定很难看,所以我做了一个迭代xmlDOM的函数来格式显示xml的函数,
迭代函数思路:
1.每个xml文件时有无数个兄弟节点组成,但是终有最后截止的一个,那么循环结束的标志就是当一个节点没有兄弟节点时,循环就结束,
那么可以循环兄弟节点,于是有循环兄弟节点函数
2每个节点可能有子节点,子节点也可能有兄弟子节点,这个时候利用循环兄弟节点函数,循环节点的第一个子节点,
效果图:
主要代码:private void getXMLStr(XmlDocument xmlDoc)
{
foreach (XmlNode node in xmlDoc.ChildNodes)
{
if (node.NodeType == XmlNodeType.Element)
{
getNext(node,0);
}
else
{
xml = ”
” + node.OuterXml.Replace(“”,”>”);
}
}
}
private void getNext(XmlNode node,int i)
{
if (node.NextSibling == null)//如果没有兄弟节点
{
if (node.HasChildNodes)
{
//如果有子节点
if (node.FirstChild.NodeType != XmlNodeType.Text)
{
//getXmlAttribute(node) 获取节点的所有属性
//如果子节点的子节点不是text类型
xml = xml + ”
getNext(node.FirstChild, i + 1);
xml = xml + ”
“+ node.Name +”>
“;
}
else
{
//如果子节点的子节点不是text类型
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
}
else
{
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
}
else
{
if (node.HasChildNodes)
{
if (node.FirstChild.NodeType != XmlNodeType.Text)
{
xml = xml + ”
getNext(node.FirstChild, i + 1);
xml = xml + ”
“+ node.Name + “>
“;
}
else
{
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
}
else
{
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
getNext(node.NextSibling,i);
}
}
private string getXmlAttribute(XmlNode node)
{
string rtn=string.Empty;
foreach (XmlAttribute attr in node.Attributes)
{
rtn +=” “+ attr.Name + “=” + attr.Value;
}
return rtn;
}
源码:
showXML.aspx
读取xml
function showXml() {
$.ajax({
url: ‘showXML.aspx?action=create&rnd’ + Math.random(),
type: ‘post’,
cache: false,
async: false,
success: function (result) {
if (result != ”) {
result = result.toString();
$(“#pre_xml”).show().html(”).append(result);
}
else {
alert(‘读取数据失败!’);
}
}
});
}
$(document).ready(function () {
showXml();
});
function hideXml() {
$(“#pre_xml”).hide();
}
showXML.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Xml;
using System.Web.UI.HtmlControls;
public partial class showXML : System.Web.UI.Page
{
public string xml = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
if (Request.QueryString[“action”] != null && Request.QueryString[“action”].ToString() != “”)
{
switch (Request.QueryString[“action”].ToString())
{
case “create”:
Response.Clear();
Response.Write(showXml());
Response.End();
break;
default:
break;
}
}
}
///
/// 在html显示xml
///
/// 文件名字
private string showXml()
{
string rtn = string.Empty;
string path = Server.MapPath(“Xml\\”) + “示例_创建” + “.xml”; //xml文件路径
if (File.Exists(path))
{
XmlTextReader xmlRead = new XmlTextReader(path);//xml只读类
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlRead);
xmlRead.Close();
getXMLStr(xmlDoc);
rtn = xml;
}
return rtn;
}
private void getXMLStr(XmlDocument xmlDoc)
{
foreach (XmlNode node in xmlDoc.ChildNodes)
{
if (node.NodeType == XmlNodeType.Element)
{
getNext(node,0);
}
else
{
xml = ”
” + node.OuterXml.Replace(“”,”>”);
}
}
}
private void getNext(XmlNode node,int i)
{
if (node.NextSibling == null)//如果没有兄弟节点
{
if (node.HasChildNodes)
{
//如果有子节点
if (node.FirstChild.NodeType != XmlNodeType.Text)
{
//getXmlAttribute(node) 获取节点的所有属性
//如果子节点的子节点不是text类型
xml = xml + ”
getNext(node.FirstChild, i + 1);
xml = xml + ”
“+ node.Name +”>
“;
}
else
{
//如果子节点的子节点不是text类型
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
}
else
{
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
}
else
{
if (node.HasChildNodes)
{
if (node.FirstChild.NodeType != XmlNodeType.Text)
{
xml = xml + ”
getNext(node.FirstChild, i + 1);
xml = xml + ”
“+ node.Name + “>
“;
}
else
{
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
}
else
{
xml = xml + ”
” + node.OuterXml.Replace(“”, “>”) + ”
“;
}
getNext(node.NextSibling,i);
}
}
private string getXmlAttribute(XmlNode node)
{
string rtn=string.Empty;
foreach (XmlAttribute attr in node.Attributes)
{
rtn +=” “+ attr.Name + “=” + attr.Value;
}
return rtn;
}
}
示例_创建.xml源码
注意:xml路径与后天获取的xml的路径要一致,我的路径是程序根目录xml文件夹下
示例_创建.xml源码
11
12
13
14
15
16
21
22
23
24
25
26
以上就是html显示xml文件数据的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎来亿速云行业资讯!