유효한 XML 문서를 OFX v1.0.2 format으로 변환해야합니다. 이 형식은 다소 XML이지만, 기술적으로 유효하지 않으므로 XML로 파싱 할 수 없습니다.XSLT를 사용하여 XML을 잘못된 XML로 변환하려면 어떻게해야합니까?
.NET XslCompiledTransform
개체가 XML 문서로 출력을 해석하려고하기 때문에 XML 변환이 제대로 작동하지 않습니다.
는 ** 저는 여기에 파일을 다운로드 할 때 내가 <
, 그들은 제거 얻을 >
를 사용하여 XML 틱 태그를 벗어날 경우는 XML을
public string Transform(XmlElement xmlElement, Dictionary<string, object> parameters)
{
string strReturn = "";
// Set the settings to allow scripts to executed.
XsltSettings settings = new XsltSettings(false, true);
// Load the XSLT Document
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xsltFileName, settings, new XmlUrlResolver());
// arguments
XsltArgumentList args = new XsltArgumentList();
if (parameters != null && parameters.Count > 0)
{
foreach (string key in parameters.Keys)
{
args.AddParam(key, "", parameters[key]);
}
}
//Create a memory stream to write to
Stream objStream = new MemoryStream();
// Transform the xml/xslt into a Writer
XmlTextWriter xmlWriter = new XmlTextWriter(objStream, Encoding.UTF8);
// Apply the transform
xslt.Transform(xmlElement, args, xmlWriter);
objStream.Seek(0, SeekOrigin.Begin);
// Read the contents of the stream
StreamReader objSR = new StreamReader(objStream);
strReturn = objSR.ReadToEnd();
return strReturn;
}
를 변환하는 제 기능입니다.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"></xsl:output>
<xsl:param name="currentdate"></xsl:param>
<xsl:template match="Transactions">
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<DTSERVER><xsl:value-of select="$currentdate" />
<LANGUAGE>ENG
그래서 내가 일반 텍스트 문자열로 내 XML을 변환 할 수 있습니다 :
여기 내 XSLT의 시작인가?
는 UPDATE :
이 질문을 변경했습니다. 나는 원래 질문에 대한 분명한 대답을 깨달았다. XslCompiledTransform
개체를 사용하려면 XmlTextWriter를 사용하여 XML 문서에 출력을 작성해야합니다. 분명히 구문 분석하지 않습니다. 사과.
당신은 문제가 무엇인지 정확하게 말의 더 나은 일을해야한다. 특히 문제를 재현하는 작은 예제를 만들 수 있습니까? –
@ 존 - 예외와 일부 코드를 포함하도록 질문을 업데이트하겠습니다. – Damovisa