Wod*_*dzu 14 c# xmlwriter xml-serialization
我想将我的对象序列化为xml,然后序列化为字符串.
public class MyObject
{
[XmlElement]
public string Name
[XmlElement]
public string Location;
}
Run Code Online (Sandbox Code Playgroud)
我想获得一个单行字符串,它会像这样:
<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject>
Run Code Online (Sandbox Code Playgroud)
我正在使用这样的代码:
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
StringWriter StringWriter = new StringWriter();
StringWriter.NewLine = ""; //tried to change it but without effect
XmlWriter writer = XmlWriter.Create(StringWriter, settings);
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
XmlSerializer MySerializer= new XmlSerializer(typeof(MyObject ));
MyObject myObject = new MyObject { Name = "Vladimir", Location = "Moskov" };
MySerializer.Serialize(writer, myObject, namespaces);
string s = StringWriter.ToString();
Run Code Online (Sandbox Code Playgroud)
这是我得到的最接近的:
<MyObject>\r\n <Name>Vladimir</Name>\r\n <Location>Moskov</Location>\r\n</MyObject>
Run Code Online (Sandbox Code Playgroud)
我知道我之后可以从字符串中删除"\ r \n".但是我想不要生产它们而不是以后删除它们.
谢谢你的时间.
Mar*_*ell 13
你可以尝试:
settings.NewLineHandling = NewLineHandling.None;
settings.Indent = false;
Run Code Online (Sandbox Code Playgroud)
对我来说,给出:
<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject>
Run Code Online (Sandbox Code Playgroud)
我使用了上面的输入,这里是XML字符串方法的通用对象,可以在任何地方重复使用:
public static string ObjectToXmlString(object _object)
{
string xmlStr = string.Empty;
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = false;
settings.OmitXmlDeclaration = true;
settings.NewLineChars = string.Empty;
settings.NewLineHandling = NewLineHandling.None;
using (StringWriter stringWriter = new StringWriter())
{
using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, settings))
{
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
XmlSerializer serializer = new XmlSerializer(_object.GetType());
serializer.Serialize(xmlWriter, _object, namespaces);
xmlStr = stringWriter.ToString();
xmlWriter.Close();
}
stringWriter.Close();
}
return xmlStr;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16505 次 |
| 最近记录: |