我有以下代码,但我不想显示名为"booksList“的节点。我需要您的帮助,解决方案,我删除了XmlArrayItem标签,但不能正常工作。
--我从下面的帖子中拿出了这个例子
您不能使用标准序列化工具从您的问题中序列化类,这样它将具有与节点相同级别的条目。当用标准序列化工具保存类时,节点的列表将始终嵌套到与节点级别相同的单独的数组节点中。同样关注的是图书类上的记录数组字段。要生成您想要的XML输出--与节点级别相同的节点--您必须在您的图书类中实现IXmlSerializable接口,以便进行自定义序列化。要查看IXmlSerializable实现的示例,请访问以下链接: StackOverflow答案,CodeProject文章。另一种解决方案是--正如用户Alexandr在我的回答中所说的--从List类型继承您的图书类,并在您的书中拥有从List类型继承的类类型的类字段记录。
[XmlRoot("books")]
public class books
{
[XmlElement("bookNum")]
public int bookNum { get; set; }
[XmlRoot("book")]
public class book
{
[XmlElement("name")]
public string name { get; set; }
[XmlRoot("record")]
public class record
{
[XmlElement("borrowDate")]
public string borrowDate { get; set; }
[XmlElement("returnDate")]
public string returnDate { get; set; }
}
[XmlArray("borrowRecords")]
[XmlArrayItem("record")]
public record[] records { get; set; }
}
[XmlArray("booksList")]
[XmlArrayItem("book")]
public book[] books { get; set; }
}<books>
<bookNum>2</bookNum>
<booksList>
<book>
<name>Book 1</name>
<borrowRecords>
<record>
<borrowDate>2013-1-3</borrowDate>
<returnDate>2013-1-5</returnDate>
</record>
<record>
<borrowDate>2013-2-3</borrowDate>
<returnDate>2013-4-5</returnDate>
</record>
</borrowRecords>
</book>
<book>
<name>Book 2</name>
<borrowRecords>
<record>
<borrowDate>2013-1-3</borrowDate>
<returnDate>2013-1-5</returnDate>
</record>
<record>
<borrowDate>2013-2-3</borrowDate>
<returnDate>2013-4-5</returnDate>
</record>
</borrowRecords>
</book>
</booksList>
</books>如果像Ed所说的那样使用"XmlIgnore“标记,但是删除数组中的所有数据,那么我需要的是数据,而不是"booksList”节点。
就像这样:
<books>
<bookNum>2</bookNum>
<book>
<name>Book 1</name>
<borrowRecords>
<record>
<borrowDate>2013-1-3</borrowDate>
<returnDate>2013-1-5</returnDate>
</record>
<record>
<borrowDate>2013-2-3</borrowDate>
<returnDate>2013-4-5</returnDate>
</record>
</borrowRecords>
</book>
<book>
<name>Book 2</name>
<borrowRecords>
<record>
<borrowDate>2013-1-3</borrowDate>
<returnDate>2013-1-5</returnDate>
</record>
<record>
<borrowDate>2013-2-3</borrowDate>
<returnDate>2013-4-5</returnDate>
</record>
</borrowRecords>
</book>
</books>我使用这个例子是因为我无法显示原始数据,但我需要删除"booksList“的问题与我需要使用的标准相同。
发布于 2019-05-22 21:51:04
我找到了解决方案,只需在cs类中更改或添加用于XmlArrayItem("book")的XmlElement("book"),如下所示:
[XmlRoot("books")]
public class books
{
[XmlElement("bookNum")]
public int bookNum { get; set; }
[XmlRoot("book")]
public class book
{
[XmlElement("name")]
public string name { get; set; }
[XmlRoot("record")]
public class record
{
[XmlElement("borrowDate")]
public string borrowDate { get; set; }
[XmlElement("returnDate")]
public string returnDate { get; set; }
}
[XmlElement("record")]
public record[] records { get; set; }
}
[XmlElement("book")]
public book[] books { get; set; }
}这将获得以下xml文件:
<books>
<bookNum>2</bookNum>
<book>
<name>Book 1</name>
<borrowRecords>
<record>
<borrowDate>2013-1-3</borrowDate>
<returnDate>2013-1-5</returnDate>
</record>
<record>
<borrowDate>2013-2-3</borrowDate>
<returnDate>2013-4-5</returnDate>
</record>
</borrowRecords>
</book>
<book>
<name>Book 2</name>
<borrowRecords>
<record>
<borrowDate>2013-1-3</borrowDate>
<returnDate>2013-1-5</returnDate>
</record>
<record>
<borrowDate>2013-2-3</borrowDate>
<returnDate>2013-4-5</returnDate>
</record>
</borrowRecords>
</book>
</books>没有节点"“
https://stackoverflow.com/questions/56263565
复制相似问题