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

Я хотел бы преобразовать строку, содержащую xml, используя XSLT, она предназначена для колумбийской компании, поэтому у меня есть следующий код (не пытайтесь его понять):

string xmlTFDNode = @<tfd:TimbreFiscalDigital  xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"  xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital TimbreFiscalDigital.xsd"  selloCFD="tOSe+Ex/wvn33YlGwtfmrJwQ31Crd7lI9VcH63TGjHfxk5vfb3q9uSbDUGk9TXvo70ydOpikRVw+9B2Six0m bu3PjoPpO909oAYITrRyomdeUGJ4vmA2/12L86EJLWpU7vIt4cL8HpkEw7TOFhSdpzb/890+jP+C1adBsHU1VHc=" FechaTimbrado="2010-03-06T20:40:10" UUID="ad662d33-6934-459c-a128-bdf0393e0f44"   noCertificadoSAT="30001000000100000801" version="1.0"  selloSAT="j5bSpqM3w0+shGtImqOwqqy6+d659O78ckfstu5vTSFa+2CVMj6Awfr18x4yMLGBwk6ruYbjBlVURodEIl6n JIhTTUtYQV1cbRDG9kvvhaNAakxqaSOnOx79nHxqFPRVoqh10CsjocS9PZkSM2jz1uwLgaF0knf1g8pjDkLYwlk="/>

и у меня есть XLST , хранящийся на сервере с именем InvoiceTFD.xslt Это XSLT-файл

Я хочу создать метод для возврата строки с преобразованными данными, она должна выглядеть примерно так (это то, что делает XSLT):

||1.0|ad662d33-6934-459c-a128-bdf0393e0f44|2001-12-
17T09:30:47Z|iYyIk1MtEPzTxY3h57kYJnEXNae9lvLMgAq3jGMePsDtEOF6XLWbrV2GL/
2TX00vP2+YsPN+5UmyRdzMLZGEfESiNQF9fotNbtA487dWnCf5pUu0ikVpgHvpY7YoA4
lB1D/JWc+zntkgW+Ig49WnlKyXi0LOlBOVuxckDb7EAx4=|12345678901234 567890||

Проблема в том, что метод XslTransform.Transform создает новый файл, и я не хочу писать файл

Подводя итог, я просто хочу взять строку, преобразовать ее, используя имеющийся у меня файл XSLT, и вернуть строку с преобразованием без создания файлов на сервере, вот и все!

Я считаю, что это не так сложно, но я новичок в .NET, поэтому я действительно не знаю, как это сделать: (

Заранее спасибо и отличного дня, ребята !!

Ответы [ 3 ]

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

Вы можете записать в поток памяти:

MemoryStream oStream = new MemoryStream()
oXslt.Transform(new XPathDocument(new XmlNodeReader(oXml)), null, oStream );
oStream.Position = 0
StreamReader oReader = new StreamReader(oStream);
string output = oReader.ReadToEnd();

Кстати, используйте XPathDocument и XslCompiledTransform. Они намного быстрее, чем XslTransform и XmlDocument. Даже если вы используете XmlDocument для создания xml, преобразуйте его в XPathDocument для преобразования.

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

Transform метод может принимать Stream параметр outputStream. Вы можете создать StringWriter и передать его как выходной поток.

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

Используйте XslCompiledTransform вместо XslTransform.Используйте метод: XslCompiledTransform.Transform, сохраните результат в OutputStream.

Как я вижу, ваш XSLT имеет версию 2.0.Ни один из них не поддерживает XSLT 2.0.

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