代码改变世界

学习Professional ASP.NET 2.0 XML(二)

  Clingingboy  阅读(665)  评论(0编辑  收藏  举报
       这次继续学习XML编写器.直接看代码吧.比较简单




 只需要了解其中的几个方法就好

WriteStartDocument 方法 书写版本为“1.0”并具有独立属性的 XML 声明
 WriteComment 方法 注释

WriteStartElement 方法 写出指定的开始标记

WriteAttributeString 方法 写出具有指定值的属性

WriteElementString 方法    写出包含字符串值的元素

WriteEndElement 方法 结束标记

WriteEndDocument 方法 结束标记

上面有两个标记是一一对应的.最后都要结束标记.这样就算创建一个XML文件成功了.但会发现创建的XML文件全在一行显示.
这里就要用要XmlWriterSettings来设置XML功能了

1XmlWriterSettings settings = new XmlWriterSettings();
2settings.Indent = true;
3settings.ConformanceLevel = ConformanceLevel.Auto;
4settings.IndentChars = "\t";
5settings.OmitXmlDeclaration = false;

然后重载Create()方法就好了.这样创建的XML文件就不会写在一行了.


根据命名空间写入XML

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Xml" %>

<script runat="server">
    
void Page_Load(object sender, EventArgs e)
    
{

        
string xmlFilePath = Request.PhysicalApplicationPath + @"\Employ.xml";
        XmlWriterSettings settings 
= new XmlWriterSettings();
        settings.Indent 
= true;
        settings.ConformanceLevel 
= ConformanceLevel.Auto;
        settings.IndentChars 
= "\t";
        settings.OmitXmlDeclaration 
= false;
        
try
        
{
            
using (XmlWriter writer = XmlWriter.Create(xmlFilePath,settings))
            
{
                
//书写声明
                writer.WriteStartDocument(false);
                
//写入标记开始
                writer.WriteStartElement("employees");
                
                writer.WriteAttributeString(
"xmlns""emp"null"urn:employees-wrox");
                writer.WriteStartElement(
"employee""urn:employees-wrox");
                
/* You can also use this approach to declare the namespace
                string prefix = writer.LookupPrefix("urn:employees-wrox");
                writer.WriteStartElement(prefix, "employee", null);
                
*/

                writer.WriteAttributeString(
"id""1");
                writer.WriteStartElement(
"name""urn:employees-wrox");
                writer.WriteElementString(
"firstName""urn:employees-wrox""Nancy");
                writer.WriteElementString(
"lastName""urn:employees-wrox""lastName");
                writer.WriteEndElement();
                writer.WriteElementString(
"city""urn:employees-wrox""Seattle");
                writer.WriteElementString(
"state""urn:employees-wrox""WA");
                writer.WriteElementString(
"zipCode""urn:employees-wrox""98122");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndDocument();
                
                writer.Flush();
                lblResult.Text 
= "写入成功";
            }

        }

        
catch (Exception ex)
        
{
            lblResult.Text 
= "发生错误:" + ex.Message;
        }

    }


</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>Writing XML File</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:Label ID="lblResult" runat="server" />
        
</div>
    
</form>
</body>
</html>


简单的就是重载其中的几个方法就可以了


最后一个例子

将数据以二进制的方式写入XML中

 1<%@ Page Language="C#" %>
 2
 3<%@ Import Namespace="System.Xml" %>
 4<%@ Import Namespace="System.IO" %>
 5
 6<script runat="server">
 7    void Page_Load(object sender, EventArgs e)
 8    {
 9
10        string xmlFilePath = Request.PhysicalApplicationPath + @"\jpgexample.xml";
11        string imageFileName = Request.PhysicalApplicationPath + @"\Employee.jpg";
12        try
13        {
14            using (XmlWriter writer = XmlWriter.Create(xmlFilePath))
15            {
16                
17                writer.WriteStartDocument(false);
18                writer.WriteStartElement("employee");
19                writer.WriteAttributeString("id""1");
20                writer.WriteStartElement("image");
21                writer.WriteAttributeString("fileName", imageFileName);
22                //获取文件大小
23                FileInfo fi = new FileInfo(imageFileName);
24                int size = (int)fi.Length;
25                //读取文件
26                byte[] imgBytes = new byte[size];
27                FileStream stream = new FileStream(imageFileName, FileMode.Open);
28                BinaryReader reader = new BinaryReader(stream);
29                imgBytes = reader.ReadBytes(size);
30                reader.Close();
31                //写入数据
32                //将指定的二进制字节编码为 BinHex 并写出结果文本
33                writer.WriteBinHex(imgBytes, 0, size);
34                writer.WriteEndElement();
35                writer.WriteEndElement();
36                writer.WriteEndDocument();
37                
38                writer.Flush();
39                lblResult.Text = "写入成功";
40            }

41        }

42        catch (Exception ex)
43        {
44            lblResult.Text = "发生错误: " + ex.Message;
45        }

46    }

47
48</script>
49
50<html xmlns="http://www.w3.org/1999/xhtml">
51<head runat="server">
52    <title>Writing Images using XmlWriter</title>
53</head>
54<body>
55    <form id="form1" runat="server">
56        <div>
57            <asp:Label ID="lblResult" runat="server" />
58        </div>
59    </form>
60</body>
61</html>
62

主要用到System.IO文件的操作.跟XML的操作没多大的关系
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示