保留\ n在C#中的Xml序列化中

问题描述 投票:-1回答:1

我有一个带有某些字段的类,例如

public class Abc
{
  private String text;

  public String Text
  {
    get { return this.text; }
    set { this.text = value; }
  }
}

存储过程返回该对象,我必须将其序列化为XML字符串,以将其与XSL文件一起显示。我使用此方法序列化对象

   public static String SerializeObject(Object pObject)
    {
        try
        {
            String XmlizedString = null;
            MemoryStream memoryStream = new MemoryStream();
            XmlSerializer xs = new XmlSerializer(pObject.GetType());

            XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.Unicode);

            xs.Serialize(xmlTextWriter, pObject);
            memoryStream = (MemoryStream) xmlTextWriter.BaseStream;
            XmlizedString = UTF16ByteArrayToString(memoryStream.ToArray());

            return XmlizedString.Trim();
        }
        catch (Exception e)
        {
            return null;
        }
    }

如果我对象的Text属性包含一些换行符\ n,则通过序列化将其删除并替换为空格。序列化后如何保留换行符?谢谢

c# xml xml-serialization
1个回答
0
投票

[我试图改变方法,正如我在this答案中所见,我定义了一个模板来在我的XSL文件中调用:

  <xsl:template name="replaceNL">
    <xsl:param name="pText"  select="string(.)"/>

      <xsl:choose>
        <xsl:when test="contains($pText, '&#xA;')">
          <xsl:value-of select="substring-before($pText, '&#xA;')"/>
          <br />
          <xsl:call-template name="replaceNL">
            <xsl:with-param name="pText" select="substring-after($pText, '&#xA;')"/>
          </xsl:call-template>
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="$pText"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>

在我的XSL中,我以这种方式调用模板:

         <tr>
          <td colspan="4">
            <p style="padding-left:5px">
              <xsl:call-template name="replaceNL">
                <xsl:with-param name="pText" select="Contract/ContractDetail/DESC_NOTE"></xsl:with-param>

              </xsl:call-template>

            </p>
          </td>
        </tr>

在传递给XSL的字符串中,我可以通过这种方式输入文本:<DESC_NOTE>daFfF&#xA;ASFAFA&#xA;FGAGA</DESC_NOTE>但是在输出中,我看不到模板所应用的更改,实际上,我看到的文本为“ daFfF br / ASFAFA br / FGAGA”,就像标记br /是文本的一部分一样。我缺少什么?

© www.soinside.com 2019 - 2024. All rights reserved.