从XPathDocument获取XML

时间:2013-01-10 19:50:30

标签: c# xml visual-studio-2010 xslt

我正在处理样式表并拥有一些初始XML。然而,在样式化之前,XML被操作了一点,我想将最终的XML发送到.Transform()。例如,......

XslCompiledTransform.Transform( xpd, xslArg, output )

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

有没有快速而肮脏的方法来获得这个?在VS2010即时窗口中,还是在调用.Transform()之前作为快速C#行或两行?

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

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

...而xpdXPathDocument

1 个答案:

答案 0 :(得分:2)

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

string xml = xpd.CreateNavigator().OuterXml;

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

如果xpd是XPathDocument,您可能只能从XPathDocument获取XPathNavigator:

XPathNavigator xpn = xpd.CreateNavigator();

并使用它来修改XML。当您完成修改后,您只需将xpnxpd传递到Transform()方法即可。另一方面,MSDN说XPathDocument的CreateNavigator()创建了一个只读导航器,所以这可能有点麻烦。

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

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

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