【发布时间】:2021-06-12 12:46:45
【问题描述】:
我有一个包含要读取的子节点的 xml 文件。 当我反序列化对象时,我不会从子节点获取值,它始终为 0。
XML 文件示例:
<?xml version="1.0" encoding="utf-8"?>
<Pieces Rapport="0" Employee="">
<Piece Roll="1" Piece="1" Amount="1" Length="1.00" />
<Piece Roll="1" Piece="1" Amount="1" Length="2.00" />
<Piece Roll="1" Piece="1" Amount="1" Length="3.00" />
<Piece Roll="1" Piece="1" Amount="1" Length="0" />
<Piece Roll="1" Piece="1" Amount="1" Length="0" />
</Pieces>
我用[XmlElement] 标签标记了我的课程,如下所述:How to deserialize xml to object
类:
[XmlRoot("Pieces")]
public class StukLijst
{
[XmlElement("Rapport")]
public string rapport { get; set; }
[XmlElement("Employee")]
public string employee { get; set; }
[XmlElement("Piece")]
public List<StukRow> stukLijst { get; set; }
}
public class StukRow
{
[XmlElement("Roll")]
public int rol { get; set; }
[XmlElement("Piece")]
public int stuk { get; set; }
[XmlElement("Amount")]
public int banen { get; set; }
[XmlElement("Length")]
public double lengte { get; set; }
}
读取xml文件:
private void LoadXml(string pickListNumber, string lineNumber)
{
string path = filePath + pickListNumber + "_" + lineNumber + ".xml";
StreamReader xmlStream = new StreamReader(path);
XmlSerializer serializer = new XmlSerializer(typeof(StukLijst));
StukLijst result = (StukLijst)serializer.Deserialize(xmlStream);
}
结果如下:
那么为什么 Employee 是 null 而子节点都是 0?
似乎它可以找到孩子,但没有从他们那里获取数据。
有什么解决办法吗?
【问题讨论】:
-
你不是在混合元素和属性吗?新的 XML 节点是一个元素,但
Rapport和Employee不是新的 XML 节点,而是现有Pieces节点/元素的属性