如何在没有数据时阻止XmlSerializer中的自闭关标签 [英] How to Prevent self closing tags in XmlSerializer when no data is present

查看:175
本文介绍了如何在没有数据时阻止XmlSerializer中的自闭关标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public string XmlSerializer(Object item)
{
    StringBuilder builder = new StringBuilder();
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.OmitXmlDeclaration = true;
    settings.Indent = true; 

    using (XmlWriter xmlWriter = XmlWriter.Create(builder, settings))
    {
        XmlSerializer xmlSerializer = new XmlSerializer(item.GetType());
        XmlSerializerNamespaces nameSpaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
        nameSpaces.Add("", "");
        
        xmlSerializer.Serialize(xmlWriter, item, nameSpaces);
    }

    return builder.ToString(); 
}



O / P: -


O/P :-

<get_country_details_response>
<country_id>10.0000</country_id>
<country_name>10.0000</country_name> 
<currency_name />   <!-- Need to Avoid This Self Closing Tag -->
</get_country_details_response>

推荐答案

一个选项是使用正则表达式对输出进行一些后处理:



首先定义以下正则表达式以找到空标签:

One option is to perform some post-processing of the output using regular expressions:

First define the following Regex to find the empty tags:
static Regex emptyElementRegex = new Regex(@"<(\w+)\s*/>");



然后处理您的输出以替换所有匹配的事件:


Then process your output to replace all matching occurrences:

var result = builder.ToString();
result = emptyElementRegex.Replace(result, @"<


1>);
1>");



这应该转换所有没有属性的自动关闭标签。


This should transform ALL self-closing tags without attributes.


这篇关于如何在没有数据时阻止XmlSerializer中的自闭关标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆