Как мне динамически создать схему XML в C #? - PullRequest
2 голосов
/ 29 марта 2011

Я пытаюсь динамически создать XML-схему (XSD) из C #, используя обычные классы XElement и XAttribute, но нельзя указывать имена с двоеточиями.То есть я не могу создать элементиспользуя код

... = new XElement("xs:element");

, поскольку ":" не допускается.

Каков правильный способ динамического построения схемы в C # тогда?

Ответы [ 4 ]

2 голосов
/ 30 марта 2011

Для создания схем вы должны использовать класс XmlSchema. Ссылка ниже предоставляет исчерпывающий пример его создания программно:

http://msdn.microsoft.com/en-us/library/9ta3w88s.aspx


Пример:

static void Main(string[] args)
{
    var schema = new XmlSchema();

    // <xs:element name="myElement" type="xs:string"/>
    var myElement = new XmlSchemaElement();
    schema.Items.Add(myElement);
    elementCat.Name = "myElement";
    elementCat.SchemaTypeName = 
        new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

    // writing it out to any stream
    var nsmgr = new XmlNamespaceManager(new NameTable());
    nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
    schema.Write(Console.Out, nsmgr);

    Console.ReadLine();
}
1 голос
/ 29 марта 2011

При создании новых элементов XML вы должны знать, что часть перед двоеточием (в данном случае xs) фактически является псевдонимом для пространства имен XML (в случае XSD, xs обычно относится кhttp://www.w3.org/2001/XMLSchema).Итак, чтобы продолжить использовать XDocument для создания своего XSD, вы должны использовать:

XNamespace ns = new XNamespace("http://www.w3.org/2001/XMLSchema");
... = new XElement(ns + "element");

См. Пример здесь: http://msdn.microsoft.com/en-us/library/bb292758.aspx

0 голосов
/ 29 марта 2011

Если вы хотите создать xml, вам следует использовать класс XmlWriter

0 голосов
/ 29 марта 2011

Я написал блог на эту тему.Вы можете использовать DataTable для сохранения схемы.

...