簡體   English   中英

基於xsd模式生成xml(使用.NET)

[英]generating xml based on xsd schema (with .NET)

我想根據我的xsd架構(cap.xsd)生成一個xml文件。 我找到了這篇文章,並按照說明操作: 使用XSD文件生成XML文件

  • 我已經在xsd.exe的幫助下創建了這個類,並通過拖放到我的解決方案中插入它
  • 之后,我構建了我的解決方案並創建了xml。 但它不基於xsd架構。
  • xml文件有一個包含字符的元素,但架構說必須有數字(雙)

  • 無論如何,我沒有看到xsd架構對生成的xml有什么影響? 如果我刪除了架構,則仍會創建xml文件。 並且在此行創建了xml文件:

    var data = new Program {Time =“abc”,Source =“443543253243”,};

..而不是我的架構:

怎么了?


我的課:

namespace testapp
{
    using System.IO;
    using System.Xml.Serialization;

    public class Program
    {
        public string Time;
        public string Source;

        public static void Main()
        {
            var data = new Program
                {
                    Time = "abc",
                    Source = "buffalo",
                };

            var serializer = new XmlSerializer(typeof(Program));
            using (var stream = new StreamWriter("E:\\cap_test.xml"))
            {
                serializer.Serialize(stream, data);
            }
        }
    }
}

我的架構:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="cap" type="capType"/>
    <xsd:complexType name="capType">
        <xsd:sequence>
            <xsd:element name="tel" type="telType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="telType">
        <xsd:sequence>
            <xsd:element name="time" type="xsd:double"/>
            <xsd:element name="source" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

和我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<Program xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Time>abc</Time>
    <Source>buffalo</Source>
</Program>

您應該使用從xsd生成的類,而不是使用Program 我跑的時候

xsd /classes schema.xsd

它創建一個schema.cs文件。 當我在我的項目中包含它時,我可以編寫這段代碼:

class Program
{
    public static void Main()
    {
        var data = new capType { tel = new[] {
           new telType { source = "buffalo", time = 1 }
        } };

        var serializer = new XmlSerializer(typeof(capType));
        using (var stream = new StreamWriter(@"E:\cap_test.xml"))
        {
            serializer.Serialize(stream, data);
        }
    }
}

寫道:

<?xml version="1.0" encoding="utf-8"?>
<cap xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <tel>
    <time>1</time>
    <source>buffalo</source>
  </tel>
</cap>

schema.cs time屬性為double類型的事實意味着您只能輸入有效數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM