XElement
및 XslCompiledTransform
의 조합을 사용하는 데 문제가 있습니다. 나는 아래에 사용하고있는 샘플 코드를 넣었다. GetXmlDocumentXml()
메서드를 사용하여 입력 XML을 얻는다면 제대로 작동합니다. 상태 시작에서XElement 및 XslCompiledTransform 문제
토큰 텍스트가 잘못된 XML 문서 초래 : 내가 대신 GetXElementXml()
방법을 사용하는 경우 XslComiledTransform
의 Transform
메서드를 호출 할 때, 나는 InvalidOperationException
를 얻을. XML 조각을 작성하려면 ConformanceLevel 설정이 ConformanceLevel.Fragment 또는 ConformanceLevel.Auto로 설정되어 있는지 확인하십시오.
XElement
과 XmlDocument
의 CreateNavigator
메서드는 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();
}