saxon 9.8을 사용하고 있습니다. 나는 나에게이 기능을 채우기 도와주세요Saxon-api를 사용하여 변환하는 방법
`using Saxon.Api;
private string Transform(Stream xmlStream, string transform)
{
}`
이 below.So 같은 C#에서 변환 함수를 작성 할
saxon 9.8을 사용하고 있습니다. 나는 나에게이 기능을 채우기 도와주세요Saxon-api를 사용하여 변환하는 방법
`using Saxon.Api;
private string Transform(Stream xmlStream, string transform)
{
}`
이 below.So 같은 C#에서 변환 함수를 작성 할
난 당신이 적어도 자신의 코드를 작성하려고한다고 생각하면 때 인터넷에 가능한 대답을 찾으십시오. 그리고 특정한 질문을하는 것보다 당신이 이런 방식으로 우리의 문제를 풀 수 없을 때. 나는 당신을위한 전체 코드를 작성하지 않을 것입니다. 하지만 난 내가 XSLT 변환을위한 색슨 API를 사용하고 어떻게 여기에 공유 할 수 있습니다 : 나는 너무 XSLT1.0을 지원하기 위해 내 변환 클래스의 스위치를 사용하고
public static String TransfromXMLWithXSLT2(String i_xmlData, String i_xsltCode)
{
Processor xsltProcessor = new Processor();
DocumentBuilder documentBuilder = xsltProcessor.NewDocumentBuilder();
documentBuilder.BaseUri = new Uri("file://");
XdmNode xdmNode = documentBuilder.Build(new StringReader(i_xmlData));
XsltCompiler xsltCompiler = xsltProcessor.NewXsltCompiler();
XsltExecutable xsltExecutable = xsltCompiler.Compile(new StringReader(i_xsltCode));
XsltTransformer xsltTransformer = xsltExecutable.Load();
xsltTransformer.InitialContextNode = xdmNode;
using (StringWriter stringWriter = new StringWriter()) {
Serializer serializer = new Serializer();
serializer.SetOutputWriter(stringWriter);
xsltTransformer.Run(serializer);
return stringWriter.ToString();
}
}
. 당신이 문자열은 단순히이 필요한 방법으로 코드를 변경 스트림/독자와 필요가없는 경우에 따라서
public static String TransfromXMLWithXSLT1(String i_xmlData, String i_xsltCode)
{
XslCompiledTransform xslt = new XslCompiledTransform();
using (StringReader xsltStringReader = new StringReader(i_xsltCode)) {
using (XmlReader xsltXmlReader = XmlReader.Create(xsltStringReader)) {
xslt.Load(xsltXmlReader);
using (StringReader tableStringReader = new StringReader(i_xmlData)) {
using (XmlReader tableXmlReader = XmlReader.Create(tableStringReader)) {
using (StringWriter stringWriter = new StringWriter()) {
xslt.Transform(tableXmlReader, new XsltArgumentList(), stringWriter);
return stringWriter.ToString();
}
}
}
}
}
}
: XSLT1.0 동안 나는 내 코드에서 다음과 같습니다 당신의 정보를 원하시면, 닷넷 기능을 선호 !
documentBuilder.BaseUri = new Uri ("file : /// C :/"); 에 대한? 의무적인가? 그게 필요 없다면? – swifty
좋은 질문입니다! 그것은 필수적이지만 나는 정확히 왜 그런지 알지 못합니다. Saxon은 특히 파일을 처리하기 위해 만들어 졌기 때문에 그럴 것 같습니다. 일반적으로 DocumentBuilder는 시스템에 새 문서를 만듭니다. XsltTransformer 용 XdmNode를 생성하기 위해서만 사용하고 있습니다. 그러나 새로운 Uri ("file : //")를 수정하는 것으로 충분합니다. 다른 블로그에서 이것을 봤습니다 => https://stackoverflow.com/questions/16101213/load-xml-and-xslt-from-embedded-resource-in-saxon-9-4he – Momo
https에서이 질문에 대한 토론이 있습니다. : //saxonica.plan.io/boards/3/topics/7029 –
정확하게 수행해야하는 기능은 무엇입니까? 문자열'transform'에서 XSLT로 입력'xmlStream'을 변환하고 싶다면 왜 결과가'XmlReader'입니까? XmlReader는 변환에 대한 입력으로 사용할 수 있습니다. –
saxon-resources 파일을 다운로드하고이 API를 사용하는 샘플 응용 프로그램을 확인하십시오. –
@Martin Honen, 반환 XmlReader 내 응용 프로그램에 대해 원하는 것입니다. 괜찮아. 반환 문자열을 작동하지만 수동 transformer.SetInputStream (스트림 입력, Uri의 baseUri)에 baseUri을 설정하고있다; 나는 이것이 무엇인지 전혀 모른다. 우리는 무엇을 설정합니까? – swifty