Моя цель - создать движок, который принимает последние документы CDA HL7 3.0 и делает их обратно совместимыми с HL7 2.5, который является радикально другим зверем.
Документ CDA представляет собой файл XML, который в паре с соответствующим ему файлом XSL отображает документ HTML, пригодный для отображения конечному пользователю.
В HL7 2.5 мне нужно получить отрендеренный текст без какой-либо разметки и сложить его в текстовый поток (или аналогичный), который я могу записать в 80 строк символов, чтобы заполнить сообщение HL7 2.5.
Пока что я использую XslCompiledTransform для преобразования моего XML-документа с использованием XSLT и создания результирующего HTML-документа.
Мой следующий шаг - взять этот документ (или, возможно, на шаг до этого) и отобразить HTML как текст. Я искал некоторое время, но не могу понять, как это сделать. Я надеюсь, что это легко, что я просто упускаю из виду или просто не могу найти волшебные поисковые термины. Кто-нибудь может предложить помощь?
FWIW, я прочитал 5 или 10 других вопросов в SO, которые охватывают или предостерегают, используя RegEx для этого, и не думаю, что я хочу идти по этому пути. Мне нужен отрендеренный текст.
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
public class TransformXML
{
public static void Main(string[] args)
{
try
{
string sourceDoc = "C:\\CDA_Doc.xml";
string resultDoc = "C:\\Result.html";
string xsltDoc = "C:\\CDA.xsl";
XPathDocument myXPathDocument = new XPathDocument(sourceDoc);
XslCompiledTransform myXslTransform = new XslCompiledTransform();
XmlTextWriter writer = new XmlTextWriter(resultDoc, null);
myXslTransform.Load(xsltDoc);
myXslTransform.Transform(myXPathDocument, null, writer);
writer.Close();
StreamReader stream = new StreamReader (resultDoc);
}
catch (Exception e)
{
Console.WriteLine ("Exception: {0}", e.ToString());
}
}
}