XmlSerializer 跳过非漂亮格式 xml 中的项目

问题描述 投票:0回答:1

如果我的 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 格式?

xml xml-serialization
1个回答
0
投票

问题不太好。当您阅读下一个元素时,您已经处于下一个元素并跳过所有其他元素。尝试以下我多年来一直使用的方法

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
   }                        
}
© www.soinside.com 2019 - 2024. All rights reserved.