формирование корневого тега при помощи XmlSerializer
От: voladu  
Дата: 28.11.06 06:50
Оценка:
Здравствуйте!

Необходимо сформировать заголовок файла определенным образом.
Работаю в VS2003 — VB.Net.
Необходимо (требуемый вариант):
<?xml version="1.0" encoding="windows-1251"?>
<DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="schemaName.XSD">
<DECLARHEAD>
</DECLARHEAD></DECLAR>

Есть схема данных, при помощи утилиты xsd.exe создал класс.
Получилось нечто работающее:
<System.Xml.Serialization.XmlRootAttribute("DECLAR", [Namespace]:="", IsNullable:=False)> _
    Public Class DeclarContent
        <System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
        Public DECLARHEAD As DHead
    End Class

    Public Class DHead
        <System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
                Public TIN As String 
     ' etc.................
End Class

После примененния XmlSerializer, был сформирован файл следующего вида:
<?xml version="1.0" encoding="windows-1251"?>
<DECLAR xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <DECLARHEAD>
</DECLARHEAD></DECLAR>

Выходит , что Определение атрибутов DECLAR я никак не могу контролировать.
Посоветуйте пожалуйста каким образом можно достичь желаемого!


Грубый метод замены текста в файле держу прозапас, хотелось бы как-нибудь изящнее решить проблему.
Спасибо!
Re: формирование корневого тега при помощи XmlSerializer
От: V.Petrovski Беларусь  
Дата: 28.11.06 14:28
Оценка:
Здравствуйте, voladu, Вы писали:

V>Выходит , что Определение атрибутов DECLAR я никак не могу контролировать.

V>Посоветуйте пожалуйста каким образом можно достичь желаемого!
V>

V>Грубый метод замены текста в файле держу прозапас, хотелось бы как-нибудь изящнее решить проблему.
using System;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace ConsoleApplication2
{
    internal class Program
    {
        private static void Main()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(DeclarRoot));
            serializer.Serialize(Console.Out, new DeclarRoot());
            Console.ReadLine();
        }
    }
}

[XmlRoot("DECLAR", Namespace = "", IsNullable = false)]
public class DeclarRoot
{
    [XmlAttribute("noNamespaceSchemaLocation", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
    public string NoNamespaceSchemaLocation = "schemaName.XSD";
    [XmlElement("DECLARHEAD", Form = XmlSchemaForm.Unqualified)]
    public DeclarHead Head = new DeclarHead();
}

public class DeclarHead {}


Nemerle
.NET Localizer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.