C#XMLReader未正确解析
我不想使用XMLDocument,因为我已经使用XMLWriter编写了XML编写代码。因此,应该没有理由切换C#XMLReader未正确解析,c#,xml,visual-studio,xmlreader,C#,Xml,Visual Studio,Xmlreader,我不想使用XMLDocument,因为我已经使用XMLWriter编写了XML编写代码。因此,应该没有理由切换 <Player> <Friends /> <Ignores> <Ignore>117779</Ignore> <Ignore>44237636758361374</Ignore> <Ignore>564534831</Ignore> </
<Player>
<Friends />
<Ignores>
<Ignore>117779</Ignore>
<Ignore>44237636758361374</Ignore>
<Ignore>564534831</Ignore>
</Ignores>
<InventoryItems>
<Item>
<Slot>0</Slot>
<Id>995</Id>
<Amount>39493</Amount>
</Item>
<Item>
<Slot>27</Slot>
<Id>1049</Id>
<Amount>12</Amount>
</Item>
</InventoryItems>
<BankItems />
</Player>
因此,应该没有理由切换
<Player>
<Friends />
<Ignores>
<Ignore>117779</Ignore>
<Ignore>44237636758361374</Ignore>
<Ignore>564534831</Ignore>
</Ignores>
<InventoryItems>
<Item>
<Slot>0</Slot>
<Id>995</Id>
<Amount>39493</Amount>
</Item>
<Item>
<Slot>27</Slot>
<Id>1049</Id>
<Amount>12</Amount>
</Item>
</InventoryItems>
<BankItems />
</Player>
有一个很好的理由可以切换到DOM样式的表示形式,除非您的文档太大,无法合理地放入内存中:使用该表示形式要容易得多
XmlReader
使用起来确实很痛苦。现在还不清楚到底出了什么问题(你说它“似乎到处都破了”,但不清楚到底发生了什么),但我强烈建议你换一个更简单的模型。之后,您的代码将大大简化。如果您可以使用LINQtoXML而不是3.5API之前的版本,那将使您的生活更加美好
如果你绝对坚持使用
XmlReader
,我建议你用一段更简单的XML和代码来更新你的文章,以说明问题所在。我还建议您重构代码,以测试节点类型是否为元素一次,然后将“处理元素”部分重构为单独的方法。。。在这里,您可能需要打开元素名称并在单独的方法中处理每种类型的元素。较小的方法通常更易于理解、测试和调试。XmlReader在需要最大性能或文档太大而无法装入RAM时非常有用。对于其他所有我推荐使用LINQtoXML的东西,我已经能够用更简洁的语法替换超过200行的XmlReader解析器