Dan*_*n R 10 .net c# visual-studio-2003 xml-serialization
我正在C#VS2003/.Net 1.1应用程序中序列化一个对象.但是,我需要在没有处理指令的情况下进行序列化.XmlSerializer类推出类似这样的东西:
<?xml version="1.0" encoding="utf-16" ?>
<MyObject>
<Property1>Data</Property1>
<Property2>More Data</Property2>
</MyObject>
Run Code Online (Sandbox Code Playgroud)
有没有办法得到类似下面的内容,而不处理生成的文本删除标签?
<MyObject>
<Property1>Data</Property1>
<Property2>More Data</Property2>
</MyObject>
Run Code Online (Sandbox Code Playgroud)
对于那些好奇的人,我的代码看起来像这样......
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
StringBuilder builder = new StringBuilder();
using ( TextWriter stringWriter = new StringWriter(builder) )
{
serializer.Serialize(stringWriter, comments);
return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我做了一个小小的修正
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
StringBuilder builder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
using ( XmlWriter stringWriter = XmlWriter.Create(builder, settings) )
{
serializer.Serialize(stringWriter, comments);
return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)
在2.0中,您将使用XmLWriterSettings.OmitXmlDeclaration,并序列化为XmlWriter - 但我认为这不存在于1.1中; 所以并不完全有用 - 但只是再考虑一次"考虑升级"的事情......是的,我发现它并不总是可行的.
以下链接将带您到一篇文章,其中有人提供了一种通过使用 XmlWriter 来抑制处理指令并进入“元素”状态而不是“开始”状态的方法。这会导致处理指令无法写入。
如果将 XmlWriter 传递给序列化器,则仅当 XmlWriter 的状态为“Start”(即尚未写入任何内容)时,它才会发出处理指令。
// Assume we have a type named 'MyType' and a variable of this type named
'myObject'
System.Text.StringBuilder output = new System.Text.StringBuilder();
System.IO.StringWriter internalWriter = new System.IO.StringWriter(output);
System.Xml.XmlWriter writer = new System.Xml.XmlTextWriter(internalWriter);
System.Xml.Serialization.XmlSerializer serializer = new
System.Xml.Serialization.XmlSerializer(typeof(MyType));
writer.WriteStartElement("MyContainingElement");
serializer.Serialize(writer, myObject);
writer.WriteEndElement();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,写入器将处于“元素”状态(元素内部),因此不会写入任何处理指令。编写完 XML 后,您可以从底层流中提取文本并将其处理为您想要的内容。
| 归档时间: |
|
| 查看次数: |
12240 次 |
| 最近记录: |