C# XML反序列化
我尝试使用xsd.exe工具为 遵循Oracle生成的xml示例,但始终无法正确获取 当我尝试将oracle xml元素名称更改为类名称时, 具体地说,我不确定如何为的行集和行部分执行此操作 它 我敢肯定,对于序列化/反序列化业务来说,这是一项非常新的工作 这对于有更多经验的人来说是非常容易实现的 对它的了解,可以帮我一些忙吗 我为部门和员工创建了两个类:C# XML反序列化,c#,.net,xml,format,serialization,C#,.net,Xml,Format,Serialization,我尝试使用xsd.exe工具为 遵循Oracle生成的xml示例,但始终无法正确获取 当我尝试将oracle xml元素名称更改为类名称时, 具体地说,我不确定如何为的行集和行部分执行此操作 它 我敢肯定,对于序列化/反序列化业务来说,这是一项非常新的工作 这对于有更多经验的人来说是非常容易实现的 对它的了解,可以帮我一些忙吗 我为部门和员工创建了两个类: [XmlRoot("ROWSET")] class Department { [XmlElement("DEPARTMENT_
[XmlRoot("ROWSET")]
class Department
{
[XmlElement("DEPARTMENT_ID")]
string DepID { set; get; }
[XmlElement("DEPARTMENT_NAME")]
string DepName { set; get; }
[XmlElement("EMPLOYEES")]
Employee[] Employees { set; get; }
}
class Employee
{
[XmlElement("EMP_ID")]
string DepID { set; get; }
[XmlElement("EMP_NAME")]
string DepName { set; get; }
}
但这不起作用,在运行时它抱怨找不到行
元素,老实说,我不知道如何在代码中告诉
忽略它并从下一个节点开始。我知道xsd.exe会对我有所帮助,但它会生成大量不需要的数据,并让我手动对名称进行排序。我会的
我真的很想学习如何在不依赖自动化的情况下做到这一点
工具
非常感谢,
玛雅人
1.
销售额
12
弗莱德
13
霍恩
2.
营销
您可能需要创建一个额外的类行
。还要确保类和属性是公共的。下面是一个示例,说明如何使用以下命令将部门
实例序列化为给定的XML结构:
并反序列化回部门
实例:
var xml =
@"<?xml version=""1.0""?>
<ROWSET>
<ROW>
<DEPARTMENT_ID>1</DEPARTMENT_ID>
<DEPARTMENT_NAME>Sales</DEPARTMENT_NAME>
<EMPLOYEES>
<EMP>
<EMP_ID>12</EMP_ID>
<EMP_NAME>Fred</EMP_NAME>
</EMP>
<EMP>
<EMP_ID>13</EMP_ID>
<EMP_NAME>Hohn</EMP_NAME>
</EMP>
</EMPLOYEES>
</ROW>
<ROW>
<DEPARTMENT_ID>2</DEPARTMENT_ID>
<DEPARTMENT_NAME>Marketing</DEPARTMENT_NAME>
<EMPLOYEES></EMPLOYEES>
</ROW>
</ROWSET>";
using (var reader = new StringReader(xml))
{
var department = (Department)serializer.Deserialize(reader);
}
var-xml=
@"
1.
销售额
12
弗莱德
13
霍恩
2.
营销
";
使用(var reader=newstringreader(xml))
{
var department=(department)序列化程序。反序列化(reader);
}
您需要声明一个可以存储部门集合的类。查看XmlArrayAttribute。
[XmlRoot("ROWSET")]
public class Department
{
[XmlElement("ROW")]
public Row[] Rows { get; set; }
}
public class Row
{
[XmlElement("DEPARTMENT_ID")]
public string DepID { set; get; }
[XmlElement("DEPARTMENT_NAME")]
public string DepName { set; get; }
[XmlArray("EMPLOYEES")]
[XmlArrayItem("EMP")]
public Employee[] Employees { set; get; }
}
public class Employee
{
[XmlElement("EMP_ID")]
public string EmpID { set; get; }
[XmlElement("EMP_NAME")]
public string EmpName { set; get; }
}
class Program
{
static void Main()
{
var dep = new Department
{
Rows = new[]
{
new Row
{
DepID = "1",
DepName = "Sales",
Employees = new[]
{
new Employee
{
EmpID = "12",
EmpName = "Fred"
},
new Employee
{
EmpID = "13",
EmpName = "Hohn"
}
}
},
new Row
{
DepID = "2",
DepName = "Marketing",
}
}
};
var serializer = new XmlSerializer(dep.GetType());
serializer.Serialize(Console.Out, dep);
}
var xml =
@"<?xml version=""1.0""?>
<ROWSET>
<ROW>
<DEPARTMENT_ID>1</DEPARTMENT_ID>
<DEPARTMENT_NAME>Sales</DEPARTMENT_NAME>
<EMPLOYEES>
<EMP>
<EMP_ID>12</EMP_ID>
<EMP_NAME>Fred</EMP_NAME>
</EMP>
<EMP>
<EMP_ID>13</EMP_ID>
<EMP_NAME>Hohn</EMP_NAME>
</EMP>
</EMPLOYEES>
</ROW>
<ROW>
<DEPARTMENT_ID>2</DEPARTMENT_ID>
<DEPARTMENT_NAME>Marketing</DEPARTMENT_NAME>
<EMPLOYEES></EMPLOYEES>
</ROW>
</ROWSET>";
using (var reader = new StringReader(xml))
{
var department = (Department)serializer.Deserialize(reader);
}