XelementとXSLCompiledTransformの問題
-
24-10-2019 - |
質問
の組み合わせを使用するのに苦労しています XElement
と XslCompiledTransform
. 。以下で使用しているサンプルコードを配置しました。入力XMLを使用して取得した場合 GetXmlDocumentXml()
方法、正常に動作します。使用する場合 GetXElementXml()
代わりに、私は取得します InvalidOperationException
電話するとき Transform
の方法 XslComiledTransform
:
状態開始のトークンテキストは、無効なXMLドキュメントになります。 XMLフラグメントを書きたい場合は、コンフォルマンセレベルの設定が順調に設定されていることを確認してください。.
CreateNavigator
両方の方法 XElement
と XmlDocument
andを返します XPathNavigator
. 。余分なものは何ですか XmlDocument
そうすることでこれはすべてうまくいき、どうすれば同じことをすることができますか XElement
?私はただ狂ったことをしているだけですか?
static void Main(string[] args)
{
XslCompiledTransform stylesheet = GetStylesheet(); // not shown for brevity
IXPathNavigable input = this.GetXElementXml();
using (MemoryStream ms = this.TransformXml(input, stylesheet))
{
XmlReader xr = XmlReader.Create(ms);
xr.MoveToContent();
}
}
private MemoryStream TransformXml(
IXPathNavigable xml,
XslCompiledTransform stylesheet)
{
MemoryStream transformed = new MemoryStream();
XmlWriter writer = XmlWriter.Create(transformed);
stylesheet.Transform(xml, null, writer);
transformed.Position = 0;
return transformed;
}
private IXPathNavigable GetXElementXml()
{
var xml = new XElement("x", new XElement("y", "sds"));
return xml.CreateNavigator();
}
private IXPathNavigable GetXmlDocumentXml()
{
var xml = new XmlDocument();
xml.LoadXml("<x><y>sds</y></x>");
return xml.CreateNavigator();
}
解決
ああ、それは簡単でした。解決策は、包むことでした XElement
で XDocument
物体。問題が解決しました!
所属していません StackOverflow