Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止XmlReader跳转到文件末尾,或者如何重置读取器_C#_Xml_C# 4.0 - Fatal编程技术网

C# 如何防止XmlReader跳转到文件末尾,或者如何重置读取器

C# 如何防止XmlReader跳转到文件末尾,或者如何重置读取器,c#,xml,c#-4.0,C#,Xml,C# 4.0,下面是我正在阅读的XML文件的一部分: <?xml version="1.0"?> <movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ThumbGen="1"> <hasrighttoleftdirection>false</hasrighttoleftdirection> <

下面是我正在阅读的XML文件的一部分:

<?xml version="1.0"?>
<movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ThumbGen="1">
  <hasrighttoleftdirection>false</hasrighttoleftdirection>
  <title>A Nightmare on Elm Street</title>
  <originaltitle>A Nightmare on Elm Street</originaltitle>
  <year>1984</year>
  <plot>Years after being burned alive by a mob of angry parents, child murderer Freddy Krueger returns to haunt the dreams -- and reality -- of local teenagers. As the town's teens begin dropping like flies, Nancy and her boyfriend, Glen, devise a plan to lure the monster out of the realm of nightmares and into the real world.</plot>
  <tagline>A scream that wakes you up, might be your own...</tagline>
  <metascore>78</metascore>
  <trailer>http://www.youtube.com/watch?v=996</trailer>
  <rating>8.6</rating>
  <episodes />
  <episodesnames />
  <writers />
  <gueststars />
  <id>tt0087800</id>
  <releasedate>11.09.1984</releasedate>
  <actor>
    <name>Robert Englund</name>
    <name>Heather Langenkamp</name>
    <name>Johnny Depp</name>
    <name>Ronee Blakley</name>
    <name>John Saxon</name>
    <name>Amanda Wyss</name>
    <name>Jsu Garcia</name>
    <name>Charles Fleischer</name>
    <name>Joseph Whipp</name>
    <name>Lin Shaye</name>
    <name>Joe Unger</name>
    <name>Mimi Craven</name>
    <name>David Andrews</name>
  </actor>
  <genre>
    <name>Horror</name>
    <name>Comedy</name>
  </genre>
  <director>
    <name>Wes Craven</name>
  </director>
  <runtime>91</runtime>
  <certification>R</certification>
  <studio>
    <name>New Line Cinema</name>
  </studio>
  <country>
    <name>United States of America</name>
  </country>
  ...
  ...
  ...
</movie>
非常好用,非常感谢

最后一点,如何使用此方法从流派名称中获取流派?我无法搜索name元素,因为它在各种元素中使用。我不确定我是否能与以下人员一起工作:

doc.Root.Element("genre").ElementsAfterSelf("name");

不清楚返回什么,或者它将如何处理多个“名称”。

除非您的数据大于100 MB,否则请将其读入XDocument或XmlDocument

使用XmlTextReader,您无法搜索可选元素。您只能在每个元素出现时检索和存储它,然后在您自己的数据结构中“搜索”您的元素

大致上,使用Sytem.Xml.Linq

 var doc = XDocument.Load(fileName);  // takes care of all Open/Close issues
 string title = doc.Element("title").Value;
 string mpaa = doc.Element("title") == null ? "" : doc.Element("mpaa").Value;

即使有巨大的XML文件,也可以使用
XDocument
使用
XmlReader.ReadSubtree()
XElement.Load(XmlReader)
@svick:是的,我想是的,但不确定。好吧,我一辈子都不知道如何在注释框中放置代码块。然后,我不断点击回车并输入评论,所以如果人们收到50条通知,我道歉。我尝试了你的建议Henk,当我运行它时,它在“对象引用未设置为对象实例”的第一个doc.Element行上给了我一个错误。我不确定发生了什么,但我更喜欢XDocument方法。既然我需要一个循环来读取可能存在的1到10种类型,我将如何处理这些类型。再次感谢!1) 您可以编辑问题以添加其他信息。2) 我没有测试,应该这么说。您可能需要
doc.Root.Element(“title”).Value
非常感谢Henk。我的问题补充了更多。很高兴你的问题得到了回答。今后,请每个问题问一个问题。不像论坛那样使用“线程”格式。另外,对于未来的读者,您不应该使用
newXMLTextReader()
。您应该改用
XmlReader.Create()
doc.Root.Element("genre").ElementsAfterSelf("name");
 var doc = XDocument.Load(fileName);  // takes care of all Open/Close issues
 string title = doc.Element("title").Value;
 string mpaa = doc.Element("title") == null ? "" : doc.Element("mpaa").Value;