Как преобразовать XMLDocument с помощью XSLT в C # 2.0 - PullRequest
2 голосов
/ 25 июля 2011

Я использую C # 2.0, и у меня есть код ниже:

  XmlDocument doc = new XmlDocument();
  doc.LoadXml(GetListOfPagesInStructureGroup(m_Page.Id));

Выше я загружаю свой XMLDocument методом, который возвращает в виде строки, теперь после некоторой обработки в вышеупомянутом xmldocument я хочу применить XSLT к вышеуказанному XMLDocument, чтобы отобразить желаемый результат в соответствии с XSLT, и, наконец, моя функция вернет весь обработанный XML в виде строки

Пожалуйста, предложите !!

Ответы [ 4 ]

8 голосов
/ 25 июля 2011

Пожалуйста, предложите следующее решение:

        XslCompiledTransform xslTransform = new XslCompiledTransform();
        StringWriter writer = new StringWriter();          
        xslTransform.Load("xslt/RenderDestinationTabXML.xslt");
        xslTransform.Transform(doc.CreateNavigator(),null, writer);
        return writer.ToString();

Спасибо !!

2 голосов
/ 25 июля 2011

Попробуйте XslCompiledTransform класс.

1 голос
/ 27 декабря 2012

В Интернете существует множество примеров преобразования файла XML в другой формат с использованием файла XSLT, например:

XslTransform myXslTransform = new XslTransform();
XsltSettings myXsltSettings = new XsltSettings();
myXsltSettings.EnableDocumentFunction = true;
myXslTransform.Load("transform.xsl");
myXslTransform.Transform("input.xml", "output.xml");

Однако это только частичный ответ, я хотел бы иметь возможность получить входные данные XML из веб-формы и использовать их в качестве входных данных вместо файла .xml, но не нашел конкретных примеров. Кроме того, с помощью Visual Studio я вижу различные доступные конструкторы и методы, и я не вижу того, который принимает данные XML в строковом формате, поэтому было бы очень полезно, если бы кто-то мог привести пример этого.

0 голосов
/ 25 июля 2011

Re "Я хочу, чтобы мой же XMlDocument обновлялся" - он не работает так;выход отделен от входа.Если это важно, просто используйте StringWriter или MemoryStream в качестве места назначения, затем перезагрузите XmlDocument из сгенерированного вывода.

Обратите внимание, в частности: вывод преобразования xslt не должен быть xml, а также: xslt наиболее вероятно использует дерево узлов во время операции;изменение структуры на месте сделало бы это очень трудным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...