C# 如何使用XmlReader读取xml文档?

C# 如何使用XmlReader读取xml文档?,c#,xml,C#,Xml,我有一个xml: <doc> **** <book> <author>Pete</author> <rating>4</rating> <pages>243</pages> </book> <shop> <></> <></> </shop> </doc> 但当我遇

我有一个xml:

<doc>
****
<book>
    <author>Pete</author>
    <rating>4</rating>
    <pages>243</pages>
</book>
<shop>
    <></>
    <></>
</shop>
</doc>
但当我遇到《元素》这本书时,我不知道如何进入里面,我的意思是如何阅读作者、评级等?以及如何再次移动到上层以读取shop元素。 我试着去读,但我不认为这是我需要的。 有什么建议吗

评论中的例子对我没有帮助。我忘记文档中有一个名称空间:

<doc>
  ****
  <book>
      <ns8:author>Pete</ns8:author>
      <ns8:rating>4</ns8:rating>
      <ns8:pages>243</ns8:pages>
  </book>
  <shop>
      <></>
      <></>
  </shop>
</doc>
using (XmlReader reader = XmlReader.Create(stream))
{
   while (reader.Read())
   {
       if (reader.NodeType == XmlNodeType.Element)
       {
           reader.ReadToFollowing("book");
           reader.ReadToFollowing("ns8:author");
       }
}
并阅读文件:

<doc>
  ****
  <book>
      <ns8:author>Pete</ns8:author>
      <ns8:rating>4</ns8:rating>
      <ns8:pages>243</ns8:pages>
  </book>
  <shop>
      <></>
      <></>
  </shop>
</doc>
using (XmlReader reader = XmlReader.Create(stream))
{
   while (reader.Read())
   {
       if (reader.NodeType == XmlNodeType.Element)
       {
           reader.ReadToFollowing("book");
           reader.ReadToFollowing("ns8:author");
       }
}

但无论如何,请阅读以下NS8:作者;不要返回作者节点。

在ReadToFollow方法中指定正确的命名空间


您可以检查节点类型,并在此基础上定义更多逻辑。示例:下面是另一个示例:最简单的方法:XElement book=XElementXElement.ReadFromreader;然后使用XMLLINQ解析book元素。
using (XmlReader reader = XmlReader.Create(stream))
{
    reader.ReadToFollowing("book");

    reader.ReadToFollowing("author", "uri1");
    var author = reader.ReadElementContentAsString();
    Console.WriteLine(author);

    reader.ReadToFollowing("rating", "uri1");
    var rating = reader.ReadElementContentAsInt();
    Console.WriteLine(rating);

    // and so on
}