首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以XPathDocument格式输出的XslCompiledTransform

以XPathDocument格式输出的XslCompiledTransform
EN

Stack Overflow用户
提问于 2009-09-04 14:02:39
回答 3查看 2.7K关注 0票数 1

我正在尝试使用XslCompiledTransform,并将输出用作XPathDocument。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-04 14:17:17

将转换发送到基于StringWriterXmlTextWriter。然后通过从StringWriter检索XML字符串来实例化XPathDocument

代码语言:javascript
复制
var sw = new StringWriter();
var xtw = new XmlTextWriter(sw);

myTransform.Transform(myXml, xtw);

var xpd = new XPathDocument(sw.ToString());

它不是内存效率最高的机制,但足以满足大多数需求。一种类似的方法是使用MemoryStream而不是StringWriter,但相比较而言,这有点混乱。

票数 2
EN

Stack Overflow用户

发布于 2010-03-31 10:34:09

琼斯先生的回答对我很有帮助,但我发现最后一行不起作用。我最终这样做了:

代码语言:javascript
复制
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(filePath);
StringWriter stringWriter = new StringWriter();
XmlWriter xmlWriter = XmlTextWriter.Create(stringWriter);
xsl.Transform(xPathDoc, xmlWriter);
String newXml = stringWriter.ToString();
StringReader stringReader = new StringReader(newXml);
xPathDoc = new XPathDocument(stringReader);

(这里,xPathDoc是已经从XmlReader初始化的XPathDocument。)

票数 3
EN

Stack Overflow用户

发布于 2010-03-31 10:45:41

David M.Anderson的答案稍微好一点:它不会受到潜在的资源泄漏的影响;否则它是一样的。

代码语言:javascript
复制
private static XPathDocument TransformToXPathDocument(string styleSheetPath,
                                                      IXPathNavigable xPathDoc)
{
    var xsl = new XslCompiledTransform();
    xsl.Load(styleSheetPath);
    using(var stringWriter = new StringWriter())
    {
        using(XmlWriter xmlWriter = XmlWriter.Create(stringWriter))
        {
            xsl.Transform(xPathDoc, xmlWriter);
        }
        using(var reader = new StringReader(stringWriter.ToString()))
        {
            return new XPathDocument(reader);
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1379475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档