c# - 将 XML 转换为纯文本

标签 c# xml xslt hl7

我的目标是构建一个采用最新 HL7 3.0 CDA 文档的引擎,并使它们向后兼容 HL7 2.5,这是一个完全不同的野兽。

CDA 文档是一个 XML 文件,当与其匹配的 XSL 文件配对时,会呈现一个适合向最终用户显示的 HTML 文档。

在 HL7 2.5 中,我需要获取没有任何标记的渲染文本,并将其折叠到文本流(或类似的文本流)中,我可以用 80 个字符行写出该文本流来填充 HL7 2.5 消息。

到目前为止,我正在采用一种方法,即使用 XslCompiledTransform 来使用 XSLT 转换 XML 文档并生成结果 HTML 文档。

我的下一步是获取该文档(或者可能在此之前的步骤)并将 HTML 呈现为文本。我已经搜索了一段时间,但不知道如何实现这一点。我希望它是一些简单的东西,我只是忽略了,或者只是找不到神奇的搜索词。有人可以提供一些帮助吗?

FWIW,我已经阅读了 SO 中的 5 或 10 个其他问题,这些问题拥护或警告使用 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());
        }
    }
}

最佳答案

既然您有 XML 源,请考虑编写一个 XSL,它将为您提供所需的输出,而无需中间的 HTML 步骤。这比尝试转换 HTML 可靠得多。

关于c# - 将 XML 转换为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1050644/

相关文章:

Android 和 XML

xml - 删除 XML 命名空间,同时忽略根中的命名空间

c# - wcf 条件压缩

c# - 反射 - 按名称访问自定义属性

javascript - jQuery - 复选框选择一行中的所有内容或具有相似名称和 ID

java - XPath 在java中选择文档中具有指定名称的所有节点

xslt - 我需要使用 XSLT 1.0 修剪有效负载

c# - Onion架构中的Dtos

c# - 为什么不能将匿名类型传递给方法?

xml - 格式良好的 XML?标记名称和属性名称中的 XML 引用