用xslt格式化xml文件

用xslt格式化指定的xml文件,以字符串格式输出,并保存。

config/Common.xml 文件

<?xml version="1.0" encoding="utf-8"?>

<?xml-stylesheet type="text/xsl" href="Common.xslt"?>

<configuration>

  <services>

    <service id="WNMS_KI" fileName="KPI.xml" filePath="~/config/KPI.xml" />

    <service id="WNMS_PI" fileName="KPI.xml" filePath="~/config/TPI.xml" />

    <service id="Test" fileName="test.xml" filePath="~/config/test.xml" />

  </services>

</configuration>

 

config/KPI.xml 文件

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <service id="WNMS_KI" compress="false" transfer="false" needHeader="true">

        <select id="kpi" asparams="false" errInfo="">

            select * from dual

        </select>

</service>

    <service id="WNMS_PI" compress="false" transfer="false" needHeader="true">

        <select id="kpi" asparams="false" errInfo="">

            select * from dual

        </select>

    </service> 

</configuration>

 

 

 

 config/Test.xml 文件

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <service id="Test" compress="false" transfer="true" needHeader="true">

        <select id="kpi_ct"  asparams="false" errInfo="">

            select '&lt;&gt;' test from dual

        </select>

    </service> 

</configuration>

 

 

config/Common.xslt 文件

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!--

    此模板主要用于对根目录下的services/service节点进行排序,按id进行排序

-->

    <xsl:template match="/">

        <xsl:for-each select="services/service">

            <xsl:sort data-type="text" order="ascending" select="@id"/>

            <service>

                <xsl:attribute name="id">

                    <xsl:value-of select="@id"/>

                </xsl:attribute>

                <xsl:attribute name="fileName">

                    <xsl:value-of select="@fileName"/>

                </xsl:attribute>

                <xsl:attribute name="filePath">

                    <xsl:value-of select="@filePath"/>

                </xsl:attribute>

            </service>

        </xsl:for-each>

    </xsl:template>

</xsl:stylesheet>

 

 

 ServiceManage.cs 文件

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Xml;

using System.IO;

using System.Xml.XPath;

using System.Xml.Xsl;

 

/// <summary>

///ServiceManage 的摘要说明

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

// [System.Web.Script.Services.ScriptService]

public class ServiceManage : System.Web.Services.WebService

{

    string strCommandFileName = System.Web.HttpContext.Current.Server.MapPath("~/config/Common.xml");

 

    //加载配置文件

    XmlDocument xmlDocCommon = new XmlDocument();

    // 所有WebService入口程序所在的节点

    XmlNode myServiceNode;

    public ServiceManage()

    {

 

        //如果使用设计的组件,请取消注释以下行

        //InitializeComponent();

    }

 

    /// <summary>

    /// 为了提交WebService服务的效率,将所有WebService写入Common.xml文件中,用于快速定位

    /// </summary>

    /// <returns></returns>

    [WebMethod]

    public string MaintainService()

    {

        try

        {

            #region === 加载common.xml中的services节点 ===

 

            this.xmlDocCommon.Load(strCommandFileName);

 

            this.myServiceNode = this.xmlDocCommon.SelectSingleNode("configuration/services");

 

            if (this.myServiceNode != null)

            {

                this.myServiceNode.InnerXml = "";

            }

            else

            {

                XmlElement xmlConfigration = this.xmlDocCommon.CreateElement("services");

 

                this.myServiceNode = (XmlNode)xmlConfigration;

            }

 

            #endregion

 

            #region 获取结果 ===

 

            //获取所有config目录下的配置文件

            GetDirectory(new DirectoryInfo(Server.MapPath("~/config/")));

 

            //获取排序后的xml节点

            this.myServiceNode.InnerXml = TransXSLT(this.myServiceNode, Server.MapPath("~/config/Common.xslt"));

 

            // 保存文档

            this.xmlDocCommon.Save(strCommandFileName);

 

            #endregion

            return "调用成功,重写所有WebService接口文件";

        }

        catch (Exception exp)

        {

            return "出错,信息如下:" + exp.Message;

        }

    }

 

    #region === 追加所有service节点到myServiceNode节点 ===

    /// <summary>

    /// 追加所有service节点到myServiceNode节点

    /// </summary>

    /// <param name="dir">目录</param>

    private void GetDirectory(DirectoryInfo dir)

    {

        try

        {

            //获取当前所有config目录下的配置文件

            FileInfo[] files = dir.GetFiles();

 

            for (int i = 0; i < files.Length; i++)

            {

                if (files[i].Extension.ToLower() == ".xml")

                {

                    try

                    {

                        #region === 遍历每个xml文件,追加Service节点到myServiceNode节点中 ===

 

                        XmlDocument xmlDocService = new XmlDocument();

 

                        xmlDocService.Load(files[i].FullName);

 

                        XmlNodeList NodeService = xmlDocService.SelectNodes("configuration/service[@id and @instanceName and @xsd and @compress]");

 

                        for (int k = 0; k < NodeService.Count; k++)

                        {

                            XmlElement xeTemp = this.xmlDocCommon.CreateElement("service");

 

                            xeTemp.SetAttribute("id", NodeService[k].Attributes["id"].InnerText);

 

                            xeTemp.SetAttribute("fileName", files[i].Name);

 

                            xeTemp.SetAttribute("filePath", "~/config/" + files[i].FullName.Substring(files[i].FullName.IndexOf(@"\config\") + 8).Replace("\\", "/"));

 

                            this.myServiceNode.AppendChild((XmlNode)xeTemp);

 

                        }

                        #endregion

 

                    }

                    catch

                    {

                        //出错直接跳过此文件

                    }

                }

            }

 

            #region === 遍历除temp目录外的所有目录 ===

            DirectoryInfo[] arrDir = dir.GetDirectories();

 

            for (int i = 0; i < arrDir.Length; i++)

            {

                //不包括temp目录

                if (arrDir[i].Name.ToLower() != "temp")

                    GetDirectory(arrDir[i]);

            }

            #endregion

 

        }

        catch

        {

        }

    }

    #endregion

 

    #region === 获取符合XSLT样式的的xml节点字符串 ===

    /// <summary>

    /// 获取符合XSLT样式的的xml节点字符串

    /// </summary>

    /// <param name="myServiceNode">xml节点</param>

    /// <param name="strXsltFullPathFile">XSLT样式</param>

    /// <returns>转换后的xml字符串</returns>

    private string TransXSLT(XmlNode myServiceNode, string strXsltFullPathFile)

    {

        #region === 获取符合XSLT样式的的xml节点字符串 ===

 

        string strResult = "";

 

        try

        {

            string strContent = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + myServiceNode.OuterXml;

 

            using (XmlReader xmlReader = System.Xml.XmlReader.Create(new System.IO.StringReader(strContent)))

            {

                // 获取xml文件,或者XmlNode节点

                XPathDocument myXPathDocument = new XPathDocument(xmlReader);

                // 按XSLT样式转换Xml数据

                XslCompiledTransform myXslTransform = new XslCompiledTransform();

                // 读取xslt文件

                myXslTransform.Load(strXsltFullPathFile);

 

                // 将内容保存到内存

                using (MemoryStream ms = new MemoryStream())

                {

                    #region === 将结果写到内存中 ===

 

                    XmlTextWriter writer = new XmlTextWriter(ms, null);

 

                    // 按XSLT样式转换xml文件,并保存到writer中

                    myXslTransform.Transform(myXPathDocument, null, writer);

 

                    ms.Seek(0, SeekOrigin.Begin);

 

                    #endregion

 

                    #region === 获取结果 ===

 

                    // 将内容的内容转换成StreamReader流

                    StreamReader stream = new StreamReader(ms);

 

                    // 读取符合XSLT格式的数据

                    strResult = stream.ReadToEnd();

 

                    #endregion

                }

            }

        }

        catch

        {

        }

 

        return strResult;

        #endregion

 

    }

    #endregion

}

 

 ===================================================

输出结果:

会修改config/Common.xml 文件

<?xml version="1.0" encoding="utf-8"?>

<?xml-stylesheet type="text/xsl" href="Common.xslt"?>

<configuration>

  <services>
<
service id="Test" fileName="test.xml" filePath="~/config/test.xml" />

<service id="WNMS_KI" fileName="KPI.xml" filePath="~/config/KPI.xml" />
<
service id="WNMS_PI" fileName="KPI.xml" filePath="~/config/KPI.xml" />

  </services>

</configuration>

 

 ===================================================

 

 

转载于:https://www.cnblogs.com/kklt2002/archive/2008/12/03/1346584.html

InfoPath与XSLT:XML数据的转换和格式化 本章深入探讨了在InfoPath中使用XML和XSLT进行数据展示和处理的方法。通过案例展示了如何在InfoPath IDE外部处理XML文件,并使用XSLT进行转换,生成HTML页面。同时,也介绍了如何在Visual Studio中使用XSLT以及如何格式化InfoPath表单,以及创建InfoPath兼容的XML文件。 阅读详情

相关推荐

海康视觉平台VisionMaster使用学习笔记(1)

双击图像源设置图像源的属性,像素格式分为Mono8和RDB24分别对应导入的图像是彩色还是黑白。打开相机驱动软件MVS,对连接的相机进行属性上的配置,先对相机的IP进行对应的设置。将自动触发的使能打开,保存配置好的相机属性,默认保存到用户集1中。点击MVS软件中的触发按钮,查看相机是否进行正常的触发拍照。打开VM软件添加一个图像源,选择图像源选项拖出图像源。回到VM软件中将选择相机选项选择到配置好参数的相机。取图方式也可以调整为相机取图,将图像源改为相机。双击相机进行连接后对相机的属性进行配置。

A567852的博客 1万+

xslt格式化输出xml文件的三种方法(转)

xslt格式化输出xml文件的三种方法XSL由两部分组成: 一是转化XML文档;二是格式化XML文档。如果你不理解这个意思,可以这样想:XSL是一种可以将XML转化成HTML的语言,一种可以过滤和选择XML数据的语言,一种能够格式化XML数据的语言。(比如用红色显示负数。)这里不再讲XSL的语法结构,主要讲用XSLT格式化输出XML的三种方法:第一:直接输出,需要XML和XSL

a651944226的专栏 3182

保姆级教程:用Dify+DeepSeek API打造你的私人股票分析助手(附完整配置流程)

本文提供了一份详细的教程,指导用户如何利用Dify低代码平台和DeepSeek API构建一个私人股票分析助手。内容涵盖从环境准备、Dify部署、DeepSeek模型配置,到设计智能体工作流和编写高效提示词的完整流程,旨在帮助投资者和开发者快速打造专属的AI投资分析工具。

weixin_29079671的博客 639

使用 XSLT 格式化 XML

使用 XSLT 格式化 XML 在平常工作中经常遇到要求对 XML 进行格式化的情况, XSLT相比较于写纯java代码操作 org.w3c.dom.Document 更加方便,利于维护。 下面会用一个java例子来介绍XSLT的基本用法。 场景 原始的XML &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;?xml ...

Jerry_Leyu的博客 2094

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

1. 手动计算关节速度,其中timestep为仿真步长。2. 使用data.qvel直接取得关节速度。

darcsdn 767

高分三号SAR影像超精细条带数据预处理实战:从原始数据到地理编码的完整操作指南

本文提供了高分三号SAR影像超精细条带数据预处理的完整实战指南。详细介绍了从原始数据导入、多视处理、滤波去噪、DEM准备到地理编码与辐射定标的完整流程,帮助用户利用SARscape软件将原始SAR数据转化为可用于分析的地理编码产品。

tree8的博客 577

xslt格式化输出xml文件的三种方法

XSL由两部分组成: 一是转化XML文档;二是格式化XML文档。 如果你不理解这个意思,可以这样想:XSL是一种可以将XML转化成HTML的语言,一种可以过滤和选择XML数据的语言,一种能够格式化XML数据的语言。(比如用红色显示负数。) 这里不再讲XSL的语法结构,主要讲用XSLT格式化输出XML的三种方法: 第一:直接输出,需要XML和XSL两个文档,用户通过浏览器直接访问XML文档就...

dowhathowtodo 912

Opencv2.4.9源码分析——HoughCircles

图形可以用一些参数进行表示,标准霍夫变换的原理就是把图像空间转换成参数空间(即霍夫空间),例如霍夫变换的直线检测就是在距离-角度空间内进行检测。圆可以表示成: (x-a)2+(y-b)2=r2                   (1) 其中a和b表示圆心坐标,r表示圆半径,因此霍夫变换的圆检测就是在这三个参数组成的三维空间内进行检测。 原则上,霍夫变换可以检测任何形状。但复杂的形状需要的

赵春江的专栏 3万+

利用XML 与XSL 开发一个易于修改和扩充的用户手册

版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。原文出处: http://www.aiview.com/notes/xml_xsl_manual.htm作者: 张洋 Alex_doesAThotmail.com最后更新: 2001-12-15  目录

DB2 学习笔记& 户外运动 1353

微信小程序 - 最新详细实现用户保存下载视频到手机相册,将视频临时路径、在线播放地址(网络路径)URL存储到手机,弹出访问手机相册权限询问,支持视频格式mp4、avi、mov、wmv、flv、webm

微信小程序,视频,手机相册,保存,另存为,小程序保存到相册权限,writePhotosAlbum,一键保存视频到手机相册功能(视频来源为链接),第一次要获取用户授权,授权使用相册权限,小程序视频下载,如何把视频下载到相册,下载一个视频到本地相册,显示下载进度,可取消下载,视频下载到本地,微信小程序视频如何下载,保存视频到相机,页面播放视频并下载到本地,安卓系统,苹果ios保存到相册报错,权限拒绝后打不开,添加相册授权弹框拒绝后再也出不来了,实现保存视频到手机相册功能,将mp4在线视频下载并存储到用户的手机中

🏆 前端领域优质创作者 7623

Python爬虫分析二手交易平台商品定价合理性:基于多维度数据挖掘与机器学习

本文针对二手交易平台商品定价合理性问题,设计并实现了一个基于Python的多技术融合爬虫系统,结合Scrapy框架、Selenium自动化测试工具、Anti-Scraping对抗技术以及机器学习算法,对国内主流二手交易平台(闲鱼、转转等)进行大规模数据采集与分析。系统实现了商品信息的多维度采集、价格合理性模型构建、可视化展示等功能,为二手商品买卖双方提供科学的定价参考。实验结果表明,该系统能够有效识别定价异常商品,准确率达到89.7%,具有较高的实用价值。关键词:Python爬虫;二手交易;定价分析;

2201_76125261的博客 297

xlst

XSL :扩展样式表语言(EXtensible Stylesheet Language)。 XSL 包括三部分: XSLT:一种用于转换 XML 文档的语言。 XPath:一种用于在 XML 文档中导航的语言。 XSL-FO:一种用于格式化 XML 文档的语言。 XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。 把文...

weixin_34144848的博客 251

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

AI人人懂 297

用XSLT文件在浏览器格式化显示XML文件

XMLSpy编辑XSD,DTD,XML和XSLT文件非常方便,altova公司还提供了Home Edition免费版提供下载。首先定义一个描述Component的XML Schema文件xml version="1.0" encoding="UTF-8" ?>-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by ibm (i

tyrone的专栏 4032

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

xslt格式化xml文件

基本概念:html  ----  cssxml   ----  xslt 实例显示:1 cdcatalog.xmlxml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>catalog>cd>title>Empire Burlesquetitle>artist>Bob Dylanartist>country>USAcountry>compa

马如林的IT博客 1039

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

在C#中用xslt文件格式化转换xml

book.xml: The Autobiography of Benjamin Franklin Benjamin Franklin 8.99 The Confidence Man Herman Melville 11.99 The Go

zhulongxi的博客 1082

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

XML学习笔记(三)XML文件在浏览器的格式化显示(转)

菜鸟教程:www.runoob.com 一、使用CSS文件格式化XML文件 使用CSS文件对XML文件进行格式化显示: CD列表的XML文件件: <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="https://www.w3cschool.cn/xml/c...

Vaingloryss的博客 1267

使用 XSLT 显示 XML

要领: 通过使用 XSLT,您可以向 XML 文档添加显示信息。 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言。 XSLT (eXtensible Stylesheet Language Transformations) 远比 CSS 更加完善。 使用 XSLT 的方法之一是在浏览器显示 XML 文件之前,先把它转换为 HTML,正如以下的这些例子演示的那样: xm

weinideai的专栏 1087

关于xslt 操作xml 显示html的小例子

  最近项目遇到的   整合成了一个例子     先贴xml  点击量排行 http://news.sina.com.cn/hotnews/index.shtml 新浪网热门新闻排行 zh-cn 新闻总排行 1 北大教授接受手术时死亡 主治医生无行医资格 http:/

爱上晴天的雨 1070

07. JSP 处理XML

JSP 处理 XML当通过HTTP发送XML数据时,就有必要使用JSP来处理传入和流出的XML文档了,比如RSS文档;JSP 发送 XML 文件使用JSP发送XML内容就和发送HTML内容一样。唯一的不同就是您需要把页面的context属性设置为text/xml。要设置context属性,使用&lt;%@page % &gt;命令,就像这样:&lt;%@ page contentType="tex...

Al_assad的博客 690

使用 CSS 显示 XML

通过使用 CSS(Cascading Style Sheets 层叠样式表),您可以添加显示信息到 XML 文档中。

Zff19880926的博客 354

[导入]关于用xslt输出xml的问题

    在我的考试系统中,有一个关于考试配置的xml文件,里面的信息大致是从数据库的某个表中取出20道题之类的描述语言,我希望第一次通过一个xslt将这个xml文件转化为另一个xml文件,而这个xml文件中包含从数据库中取出的每一道题的信息,这样,就涉及到一个将xslt转化为xml的问题,我开始以为很麻烦,后来才发现,其实很简单: &lt;?xml version="1.0" encodin...

weixin_34405354的博客 173

【亲测免费】 VSCode XML 插件使用教程

VSCode XML 插件是由 Red Hat 开发者团队开发的一款用于 Visual Studio Code 的扩展,旨在提供强大的 XML 语言支持。该插件包括 XML 语法验证、自动完成、格式化、XSLT 调试等功能,极大地提升了开发者在处理 XML 文件时的效率和体验。 ## 项目快速启动 ### 安装插件 1. 打开 Visual Studio Code。 2. 点击左侧活动栏中的...

gitblog_01038的博客 6789

Simple sample for transforming XML to HTML by using XSLT

1. Create a general web application. 2. Create the XML file called "Book.xml" Kalen Delaney Inside SQL Server 2000 Ken Henderson The Guru's Guide to SQL S

diandian82的专栏 533
上一篇: VS 2008 JavaScript Intellisense
下一篇: 判断是否是简单密码,不能包含相同的字符(如aaa,111),递增序列(abc,123),递减序列(cda,321)...
andao9621
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值