2012-06-15 1 views
-1

Преобразование XSLT с использованием Visual Studio 2010 и C#. Мне нужна помощь. Я получаю разные результаты в зависимости от того, как я делаю преобразование. Запуск преобразования в отладчике VS Я получаю следующий вывод. Обратите внимание на теги, которые не связаны с экранами.Получение нежелательных экранированных xml-тегов в выходном файле

<Service_Log> 
<row> 
     <EntryNumber>00</EntryNumber> 
     <ErrorID>B004</ErrorID> 
     <ErrorDate>2/06/2007 18:06:07</ErrorDate> 
     <ErrorInfo>00000000</ErrorInfo> 
     </row> 
<row> 
... 
</Service_Log> 

При запуске преобразования в C#, используя следующий фрагмент кода я получаю выход с тегами XML спасся - и я не хочу, чтобы они убежали. Что мне не хватает?

XslCompiledTransform trans = new XslCompiledTransform(); 
XmlWriterSettings settings = new XmlWriterSettings(); 
string fname = FixPath(WorkingFolder) + "Phase1.xml"; 
XmlWriter writer = XmlWriter.Create(fname, settings); 
trans.Transform(xmlFile, writer); 


&lt;readsym_Service_Log&gt; 
&lt;row&gt; 
     &lt;EntryNumber&gt;00&lt;/EntryNumber&gt; 
     &lt;ErrorID&gt;B004&lt;/ErrorID&gt; 
     &lt;ErrorDate&gt;2/06/2007 18:06:07&lt;/ErrorDate&gt; 
     &lt;ErrorInfo&gt;00000000&lt;/ErrorInfo&gt; 

     &lt;/row&gt; 
&lt;row&gt; 
... 
+0

Технически, это недопустимый XML, если данные содержат обратную косую черту, не спасся. – jerrylroberts

+0

Данные содержат косые черты в поле даты. Это ты имел в виду? –

+0

Да, вот что я имею в виду ... извините за путаницу. Возможно, это отбрасывает трансформацию. – jerrylroberts

ответ

0

Попробуйте что-то вроде этого:

 string inputFileName = @"XMLFile1.xml"; 
     string xsltFileName = @"XSLTFile1.xslt"; 
     string outputFileName = @"XMLFile2.xml"; 


     XslCompiledTransform trans = new XslCompiledTransform(); 
     XsltSettings settings = new XsltSettings(); 
     settings.EnableScript = true; 
     trans.Load(xsltFileName, settings, null); 

     XmlWriter writer = XmlWriter.Create(outputFileName); 

     trans.Transform(inputFileName, writer); 
+0

Я пробовал этот код. Пришлось внести некоторые изменения, чтобы заставить его скомпилировать, но все равно получить тот же escape-выход. –