【问题标题】:XmlReader and NodeTypesXmlReader 和 NodeTypes
【发布时间】:2011-09-07 04:57:48
【问题描述】:

我有一个需要读取的 XML 文件以获取一些文本值。我在 reader.NodeType = XMLNodeType.Text 和理解 NodeType.Text 的构成节点时遇到问题。

我的 XML 阅读器只选择 NodeType = Element 并忽略节点声明之间的任何文本。

示例 XML:

<?xml version="1.0" encoding="utf-8"?>
<myxmlfile>
  <ActivitiesHelp>
  <helptext>Some text goes here I need to read.</helptext>
  </ActivitiesHelp>
</myxmlfile>

我的代码如下所示:

elementName = formName.Replace(" ", "");
while (reader.Read())
{
    // when we find an element node, we remember its name  
    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == elementName))
    {
        reader.Read();
        //if the next node = 'helptext' then get that text data
        if (reader.Name == "helptext")
        {
            // for text nodes...get the text values
            if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
            {
                formMessage = reader.Value;
            }
        }
    }
}      

Nodetype == XmlNodeType.Text 的 if 语句永远不会为真。

我做错了什么,如何在 XML 文件中指定 Text 的节点类型?

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    你不需要这样做:

    if (reader.Name == "helptext")
            {
                reader.Read();
                if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
                {
                    formMessage = reader.Value;
                }
            }
    

    即helptext 节点是一个元素,它是子节点的文本并且是 TextNode 类型

    【讨论】:

    • 谢谢本。我继续玩它和调试,实际上在你发布后大约 2 分钟就发现了!呵呵,我只需要一个阅读器。Read();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2013-02-27
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多