簡體   English   中英

來自類的自定義C#XML / XSD

[英]Custom C# XML/XSD from a classes

我試圖從我定義的類中獲取xml。 這是我的課

public class MyClass
{
    public string Name { get; set; }        
    public MyAttribute[] Elements { get; set; }
}

public class MyAttribute
{
    public string Name { get; set; }
    public object Value { get; set; }
    public string Type { get; private set; }
}


MyClass myClass = new MyClass();
myClass.Name = "Class1";
myClass.Elements = new MyAttribute[3] {
    new MyAttribute(){ Name = "Att1", Value = 4 },
    new MyAttribute(){ Name = "Att2", Value = 5 },
    new MyAttribute(){ Name = "Att3", Value = 6 }
}; 

我想得到這個XML

<?xml version="1.0" encoding="utf-8" ?>
<Class1>
  <Att1>4</Att1>
  <Att2>5</Att2>
  <Att3>6</Att3>
</Class1>

可能生成此xml和他的xsd。 謝謝。

編輯:我這樣解決使用XmlDocument類(System.Xml):

public class MyClass
{
    public string Name { get; set; }
    public MyAttribute[] Elements { get; set; }

    public XmlDocument Xml()
    {
        XmlDocument xmlDoc = new XmlDocument();
        XmlNode rootNode = xmlDoc.CreateElement(this.Name);
        foreach (MyAttribute att in this.Elements)
        {
            XmlElement xmlElement = xmlDoc.CreateElement(att.Name);
            xmlElement.InnerText = att.Value.ToString();
            rootNode.AppendChild(xmlElement);
        }
        xmlDoc.AppendChild(rootNode);
        return xmlDoc;
    }
}

對於XSD,我正在使用XmlSchema(System.Xml.Schema)

我不確定您的描述中的數據庫在哪里,但是為了從您的類的實例創建XML文件,您可以使用XmlElementXmlAttribute屬性來裝飾類,然后按照此處的描述對其進行序列化。

為了創建XSD,您可以嘗試按照此處的建議使用XSD工具。

編輯

實際上,查看您想要獲得的XML,甚至不必使用屬性,只需使用其中一個鏈接中所述的XmlSerializer類。 例如,要將生成的XML保存為字符串,可以使用:

// before calling this code, create an instance of MyClass and fill properties with appropriate values
// let's assume the instance is named instanceOfMyClass

var stringBuilder = new StringBuilder();
using (TextWriter writer = new StringWriter(stringBuilder))
{
    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
    serializer.Serialize(writer, instanceOfMyClass);
}

//now You can call stringBuilder.ToString() to get string with the serialized XML

暫無
暫無

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

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