我正在处理样式表并拥有一些初始XML。然而,在样式化之前,XML被操作了一点,我想将最终的XML发送到.Transform()
。例如,......
XslCompiledTransform.Transform( xpd, xslArg, output )
...我想获得xpd的Xml内容(作为字符串),所以我可以使用其他工具中的样式表。
有没有快速而肮脏的方法来获得这个?在VS2010即时窗口中,还是在调用.Transform()
之前作为快速C#行或两行?
编辑:我正在使用的.Transform()
是
public void Transform(IXPathNavigable input,
XsltArgumentList arguments, TextWriter results);
...而xpd
是XPathDocument
。
答案 0 :(得分:2)
编辑:我误解了你问题的意图。简单的答案是获取任何IXPathNavigable(包括XPathDocument)的XML,你可以这样做:
string xml = xpd.CreateNavigator().OuterXml;
下面是我的原始答案,它解释了如何在将代码转换为转换之前从代码中修改XPathDocument中的XML:
如果xpd
是XPathDocument,您可能只能从XPathDocument获取XPathNavigator:
XPathNavigator xpn = xpd.CreateNavigator();
并使用它来修改XML。当您完成修改后,您只需将xpn
或xpd
传递到Transform()
方法即可。另一方面,MSDN说XPathDocument的CreateNavigator()
创建了一个只读导航器,所以这可能有点麻烦。
如果它真的是只读,你应该能够这样做:
XmlDocument doc = new XmlDocument();
doc.LoadXml(xpd.CreateNavigator().OuterXml);
然后使用doc
修改XML,并在完成后将doc
传递给转换。