189 8069 5689

html显示xml文件数据

本篇文章和大家了解一下html显示xml文件数据。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!创新互联具备承接各种类型的成都做网站、成都网站设计项目的能力。经过十多年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。

有的时候我们需要在html显示xml,比如我们修改了xml,点击保存,需要在页面显示xml源码,让我们知道xml已经修改了,最好的方法是把xml放到pre元素中,但是会发现没有换行,全部显示一行,肯定很难看,所以我做了一个迭代xmlDOM的函数来格式显示xml的函数,

迭代函数思路:

1.每个xml文件时有无数个兄弟节点组成,但是终有最后截止的一个,那么循环结束的标志就是当一个节点没有兄弟节点时,循环就结束,

那么可以循环兄弟节点,于是有循环兄弟节点函数

2每个节点可能有子节点,子节点也可能有兄弟子节点,这个时候利用循环兄弟节点函数,循环节点的第一个子节点,

效果图:

html显示xml文件数据

主要代码:

   private void getXMLStr(XmlDocument xmlDoc)
    {
        foreach (XmlNode node in xmlDoc.ChildNodes)
        {

            if (node.NodeType == XmlNodeType.Element)
            {
                getNext(node,0);
            }
            else 
            {
                xml = "

" + node.OuterXml.Replace("<","<").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 + "

<" + node.Name +" "+ getXmlAttribute(node) + ">

"; getNext(node.FirstChild, i + 1); xml = xml + "

"; } else { //如果子节点的子节点不是text类型 xml = xml + "

" + node.OuterXml.Replace("<", "<").Replace(">", ">") + "

"; } } else { xml = xml + "

" + node.OuterXml.Replace("<", "<").Replace(">", ">") + "

"; } } else { if (node.HasChildNodes) { if (node.FirstChild.NodeType != XmlNodeType.Text) { xml = xml + "

<" + node.Name+" " + getXmlAttribute(node) + ">

"; getNext(node.FirstChild, i + 1); xml = xml + "

"; } else { xml = xml + "

" + node.OuterXml.Replace("<", "<").Replace(">", ">") + "

"; } } else { xml = xml + "

" + node.OuterXml.Replace("<", "<").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

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="showXML.aspx.cs" Inherits="showXML" %>





    读取xml
  
    
    
    


   



    


      

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("<","<").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 + "

<" + node.Name +" "+ getXmlAttribute(node) + ">

"; getNext(node.FirstChild, i + 1); xml = xml + "

"; } else { //如果子节点的子节点不是text类型 xml = xml + "

" + node.OuterXml.Replace("<", "<").Replace(">", ">") + "

"; } } else { xml = xml + "

" + node.OuterXml.Replace("<", "<").Replace(">", ">") + "

"; } } else { if (node.HasChildNodes) { if (node.FirstChild.NodeType != XmlNodeType.Text) { xml = xml + "

<" + node.Name+" " + getXmlAttribute(node) + ">

"; getNext(node.FirstChild, i + 1); xml = xml + "

"; } else { xml = xml + "

" + node.OuterXml.Replace("<", "<").Replace(">", ">") + "

"; } } else { xml = xml + "

" + node.OuterXml.Replace("<", "<").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文件数据的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎来创新互联行业资讯!


网页题目:html显示xml文件数据
当前链接:http://jkwzsj.com/article/gcdjii.html

其他资讯