【问题标题】:How can i read in an element name from an XML document using a reader?如何使用阅读器从 XML 文档中读取元素名称?
【发布时间】:2014-05-26 19:17:56
【问题描述】:

对于一个大学项目,我正在使用 XML 阅读器阅读 XML 文档。到目前为止,我有这段代码用于读取 XML 元素并获取它们的属性值,但我还想验证我正在从中读取属性值的元素是否具有相似的名称。例如,如果元素名称不是“pos”,那么我不想从中读取属性。 这是我的代码:

 while(_reader.Read())
 {
   if (_reader.NodeType == XmlNodeType.Element)
   {
     if(_reader.HasAttributes)
     {
       piecesOnBoard[indx] = _reader.GetAttribute("piece");
     }
   }
  indx++;
 }

【问题讨论】:

    标签: c# xml xmlreader


    【解决方案1】:

    只需检查XmlReaderName 属性

    if(_reader.Name.Equals("pos"))
        DoSomething();
    

    使用您的代码:

    while(_reader.Read())
     {
       if (_reader.NodeType == XmlNodeType.Element)
       {
         if(_reader.HasAttributes && _reader.Name.Equals("pos"))
         {
           piecesOnBoard[indx] = _reader.GetAttribute("piece");
         }
       }
      indx++;
     }
    

    【讨论】:

    • 好的,感谢您的帮助。我只想验证的一件事是,在它运行一次循环之后,当它第二次进入循环时,它会自动读取以下元素吗?谢谢
    • XmlReader 是只进的,每次你调用Read() 方法它都会读取下一个xml 节点,所以你的while 循环会读取整个xml 文件。如果你想回到你的 xml 文件的开头,你必须将流的位置设置为像stream.Position = 0; 这样的开头。这仅适用于流,如果您使用XmlTextReader,您唯一的解决方案是创建它的新实例。
    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多