【问题标题】:Is there a better way to get XmlReader NodeType properties?有没有更好的方法来获取 XmlReader NodeType 属性?
【发布时间】:2011-08-18 16:22:44
【问题描述】:

基于this,看起来每次我想要获取节点元素名称或文本值或其他任何内容时,我都需要使用 switch-case。

所以我必须使用这样的东西吗:

while (reader.Read())
{
    switch (reader.NodeType)
    {
        case XmlNodeType.Element:
        nodeName = reader.Name;
        break;
    }
}

或者我是否遗漏了一些东西,它可以变得更短更优雅(我需要使用 XmlReader,并且无法使用 LINQ to XML)?为了获得这些小信息而不得不在任何地方使用所有这些开关盒混乱的想法对我来说并不是很有吸引力。谢谢。

【问题讨论】:

  • +1:对于所有提到的有效点。我自己想知道是否存在更好的解决方案。根据我的经验,我正在使用一个使用 switch、case 实现相同功能的库。它是由经验丰富的开发人员编写的。这让我相信这可能是唯一的方法。

标签: c# xml xmlreader


【解决方案1】:

没有进行任何铸造,所以据我所知,你可以去:

while(reader.Read())
{
    nodeName = reader.Name;
}

我相信节点至少总是有一个名字,虽然我可能错了,但他们确实有。

【讨论】:

  • 是的,它有效,谢谢。我之前尝试过,但我不知道元素和文本以及任何被视为单独的“Read()”的东西,所以这就是它不起作用的原因。我认为一个 Read() 会同时获取标签和里面的内容标签,但事实并非如此。所以一个 Read() 用于标签名称,然后另一个用于内部文本值..
【解决方案2】:

Switch 案例的一件事是它非常清楚你的意图,我认为这在现代编程中很重要。

但是,如果你一直写累了,我也不能怪你,把它包装在一个 Extension 方法中怎么样?

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 2014-05-14
    • 2010-11-11
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多