Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как преобразовать один XML в другой?


Автор: vlsaf 20.10.2010, 06:58
Дано XML файл, XSLT схема версии 2.0
Нужно получить на выходе другой xml файл.

Никто не сталкивался с этим?

Автор: diadiavova 20.10.2010, 10:30
Во фреймворке такой возможности нет, так что если у тебя есть готовое преобразование и возможность переписать его под первую версию не рассматривается, то придется воспользоваться сторонним хсл-процессором, например http://saxon.sourceforge.net/

Автор: vlsaf 20.10.2010, 12:36
diadiavova, спасибо, но уже нашел

Есть бесплатное чудо, которым можно пользоваться.

AltovaXML® 2011 Community Edition. Скачивать тут 
http://www.altova.com/download/altovaxml/xml-processor-community.html

Есть поддержка XSLT схемы 2.0 и интерфейс .NET (примеры на C#)

Автор: diadiavova 20.10.2010, 12:37
Я думал тебе надо сделать это программно, потому что иначе сложно понять, что эта тема делает в этом разделе.

Автор: vlsaf 20.10.2010, 13:26
Ну так я уже наваял проект в студии.
И по нажатию одной кнопочки xml преобразуется

Код

        private void button_Transform_Click(object sender, EventArgs e)
        {
            ApplicationClass appXML = new ApplicationClass();
            XMLValidator validator = appXML.XMLValidator;
            XSLT2 xslt2 = appXML.XSLT2;

            bool isWellformed;
            validator.InputXMLFileName = textBox_XmlSource.Text;
            this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
            isWellformed = validator.IsWellFormed();
            this.Cursor = System.Windows.Forms.Cursors.Default;

            if (isWellformed) // если источник валидный
            {

                xslt2.InputXMLFileName = textBox_XmlSource.Text;
                xslt2.XSLFileName = textBox_XsltSourse.Text;
                try
                {
                    this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
                    xslt2.Execute(OutFileName());
                    this.Cursor = System.Windows.Forms.Cursors.Default;
                }
                catch (Exception ex)
                {
                    this.Cursor = System.Windows.Forms.Cursors.Default;
                    MessageBox.Show(ex.Message, "Transformation error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            else
            { 
                MessageBox.Show(validator.LastErrorMessage, "Validator error",  MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
        }

Автор: diadiavova 20.10.2010, 13:31
Я не посмотрел ссылку, просто знаю, что альтова - такая программа для работы с хмл, думал речь о ней.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)