Я пытаюсь преобразовать некоторый XML [возвращенный запросом sql, например. SELECT ... FOR XML RAW('EmailData'),ROOT('Emails'),type], но по какой-то причине только эта строка вызывает у меня проблемы:
<Emails>
<EmailData ID="370" C_ID="93" Co_ID="019" MemberName="Twin Cities Orthopedics – Savage" Commit_Program_ID="92" SubmittedBy="9175" AccountExecInfo="Jessica Cooley, [email protected]" PortfolioExecInfo="Seth Bull, 000.581.5006, [email protected]" SupplierRepInfo="Matt Matts, 000.000.4236 Ext-37, [email protected]" MemberInfoLink="https://nf.CCDD.com/asp/memberinfo.asp?memid=7893&co=019" DocumentLink="https://nf.CCDD.com/asp/maintanance.asp?doc_id=630" TermsAndCondLink="https://nf.CCDD.com/TermsAndConditions.asp?CPID=92" Doc_Source_ID="BTM" SubmittedByInfo="Automated Tier Update" />
</Emails>
Cuplrit кажется значением атрибута MemberName ... потому что, когда я возвращаю пустую строку вместо указанного выше значения, я не получаю исключение. Вы видите какие-либо недопустимые символы? Является ли «-» недопустимым символом для xml?
Мой код преобразования XSL:
public static SqlXml Transform(SqlXml inputDataXML, SqlXml inputTransformXML)
{
try
{
MemoryStream memoryXml = new System.IO.MemoryStream();
XslCompiledTransform xslt = new XslCompiledTransform();
XmlReader output = null;
xslt.Load(inputTransformXML.CreateReader());
// Output the newly constructed XML
XmlTextWriter outputWriter = new XmlTextWriter(memoryXml, System.Text.Encoding.Default);
xslt.Transform(inputDataXML.CreateReader(), null, outputWriter, null);
memoryXml.Seek(0, System.IO.SeekOrigin.Begin);
output = new XmlTextReader(memoryXml);
return new SqlXml(output);
}
catch(Exception ex)
{
byte[] byteArray = Encoding.ASCII.GetBytes( "<error>" + ex.ToString() + "</error>");
MemoryStream stream = new MemoryStream( byteArray );
XmlReader reader = new XmlTextReader(stream);
SqlXml x = new SqlXml(reader);
return x;
}
}