如果我的 xml 文件格式不美观:
<ArrayOfColumn><Column><COLUMN_NAME>SomeName1</COLUMN_NAME></Column><Column><COLUMN_NAME>SomeName2</COLUMN_NAME></Column></ArrayOfColumn>
此代码跳过第二列(如果有两个以上,则跳过第二列):
using (var xmlReader = XmlReader.Create(fileStream))
{
var serializer = new XmlSerializer(typeof(MyColumnClass), new XmlRootAttribute("Column"));
var myColumnClass= new List<MyColumnClass>();
while (xmlReader.ReadToFollowing("Column"))
{
list.AddRange(new List<MyColumnClass>() { (MyColumnClass)serializer.Deserialize(xmlReader) });
// rest of code
}
虽然我的 xml 格式很漂亮,但它运行得很好:
<ArrayOfColumn>
<Column>
<COLUMN_NAME>SomeName1</COLUMN_NAME>
</Column>
<Column>
<COLUMN_NAME>SomeName2</COLUMN_NAME>
</Column>
</ArrayOfColumn>
如何调整代码以支持非漂亮的 xml 格式?
问题不太好。当您阅读下一个元素时,您已经处于下一个元素并跳过所有其他元素。尝试以下我多年来一直使用的方法
while (!xmlReader.EOF)
{
if(xmlReader.Name != "Column")
{
xmlReader.ReadToFollowing("Column");
}
if (!xmlReader.EOF)
{
list.AddRange(new List<MyColumnClass>() { (MyColumnClass)serializer.Deserialize(xmlReader) });
// rest of code
}
}