1

我正在处理样式表并有一些初始 XML。然而,XML 在造型之前被操纵了一下,我想把最终的 XML 发送到.Transform(). 例如, ...

XslCompiledTransform.Transform( xpd, xslArg, output )

...我想获取 xpd 的 Xml 内容(作为字符串),所以我可以在其他工具中处理样式表。

有没有一种快速而肮脏的方法来获得这个?在 VS2010 即时窗口中或在调用.Transform()?

编辑:.Transform()我正在使用的是

public void Transform(IXPathNavigable input,
   XsltArgumentList arguments, TextWriter results);

...并且xpd是一个XPathDocument.

4

1 回答 1

3

编辑:我误解了你的问题的意图。简单的答案是获取任何 IXPathNavigable(包括 XPathDocument)的 XML,您可以这样做:

string xml = xpd.CreateNavigator().OuterXml;

下面是我的原始答案,它解释了如何在将 XPathDocument 输入到转换之前在代码中修改 XML:

如果xpd是 XPathDocument,您也许可以从 XPathDocument 中获取 XPathNavigator:

XPathNavigator xpn = xpd.CreateNavigator();

并使用它来修改 XML。完成修改后,您可以将其中一个xpn或传递xpd给该Transform()方法。另一方面,MSDN 说 XPathDocumentCreateNavigator()创建了一个只读导航器,所以这可能有点麻烦。

如果它真的是只读的,你应该可以这样做:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xpd.CreateNavigator().OuterXml);

然后用于doc修改 XML 并doc在完成后传递给转换。

于 2013-01-10T20:16:33.617 回答