pro*_*eek 3 c# xml xml-serialization
我的课程如下
namespace Coverage {
public class ClassInfo {
public string ClassName;
public int BlocksCovered;
public int BlocksNotCovered;
public ClassInfo() {}
public ClassInfo(string ClassName, int BlocksCovered, int BlocksNotCovered)
{
this.ClassName = ClassName;
this.BlocksCovered = BlocksCovered;
this.BlocksNotCovered = BlocksNotCovered;
}
}
public class Module {
public List<ClassInfo> ClassInfoList;
public int BlocksCovered;
public int BlocksNotCovered;
public string moduleName;
public Module()
{
ClassInfoList = new List<ClassInfo>();
BlocksCovered = 0;
BlocksNotCovered = 0;
moduleName = "";
}
Run Code Online (Sandbox Code Playgroud)
使用以下序列化程序代码
XmlSerializer SerializerObj = new XmlSerializer(typeof(Module));
// Create a new file stream to write the serialized object to a file
TextWriter WriteFileStream = new StreamWriter(@"test.xml");
SerializerObj.Serialize(WriteFileStream, report);
WriteFileStream.Close();
Run Code Online (Sandbox Code Playgroud)
我可以获得以下XML文件.
<?xml version="1.0" encoding="utf-8"?>
<Module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ClassInfoList>
<ClassInfo>
<ClassName>Fpga::TestMe</ClassName>
<BlocksCovered>4</BlocksCovered>
<BlocksNotCovered>8</BlocksNotCovered>
</ClassInfo>
<ClassInfo>
<ClassName>Fpga::TestMe2</ClassName>
<BlocksCovered>4</BlocksCovered>
<BlocksNotCovered>8</BlocksNotCovered>
</ClassInfo>
</ClassInfoList>
<BlocksCovered>8</BlocksCovered>
<BlocksNotCovered>16</BlocksNotCovered>
<moduleName>helloclass.exe</moduleName>
</Module>
Run Code Online (Sandbox Code Playgroud)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://...简单元素<Module>..</Module>?<ClassInfoList>吗?例如,如何生成XML,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Module>
<Class>
<ClassName>Fpga::TestMe</ClassName>
<BlocksCovered>4</BlocksCovered>
<BlocksNotCovered>8</BlocksNotCovered>
</Class>
<Class>
<ClassName>Fpga::TestMe2</ClassName>
<BlocksCovered>4</BlocksCovered>
<BlocksNotCovered>8</BlocksNotCovered>
</Class>
<BlocksCovered>8</BlocksCovered>
<BlocksNotCovered>16</BlocksNotCovered>
<moduleName>helloclass.exe</moduleName>
</Module>
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 13
(顺便说一下,它与问题无关,但你应该以避免公共字段为目标,因为许多stackoverflow问题都涉及很多原因)
Q3:简单地说:
[XmlElement("Class")]
public List<ClassInfo> ClassInfoList;
Run Code Online (Sandbox Code Playgroud)
Q2成为顶级名称; 您可以使用
[XmlRoot("somethingFun")]
public class Module { ... }
Run Code Online (Sandbox Code Playgroud)
Q2重新成员名称:
[XmlElement("blocks")]
public int BlocksCovered;
Run Code Online (Sandbox Code Playgroud)
(另见[XmlAttribute(...)])
Q1删除xsi等可以通过以下方式完成XmlSerializerNamespaces:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
var ser = new XmlSerializer(typeof(Module));
ser.Serialize(destination, module, ns);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |