将xml文件转换为html

时间:2016-06-15 08:52:07

标签: c# xml

我有一项任务要做。我需要将xml转换为html文件。我检查标签,然后使用基于xml文件的标签编写html文件。  就像我找到<BookHeader>我在html文件中写<h1>一样。

我有这个

xml的布局

<BookHeader>
    <AuthorGroup>
      <Author >
        <AuthorName >
          <GivenName>Juanita</GivenName>
          <FamilyName>Gomez</FamilyName>
        </AuthorName>
        <Contact>
          <Email>Juanita@gmail.com</Email>
        </Contact>
      </Author>

    </AuthorGroup>
  </BookHeader>

  <ChapterInfo >
      <ChapterID>1</ChapterID>
      <ChapterNumber>Chapter 1</ChapterNumber>

      <ChapterTitle Language="En">Just some Title</ChapterTitle>


      <ChapterHistory>
        <RegistrationDate>
          <Year>2020</Year>
          <Month>8</Month>
          <Day>18</Day>
        </RegistrationDate>
      </ChapterHistory>

    </ChapterInfo>

我在c#

中有这段代码

我逐个阅读xml元素。到目前为止,下面的代码是打印所有元素及其内容

但我想要做的是,如果元素名称为<ChapterHistory>,程序将无法读取标记内容直至其结束标记

所以程序不会读取标签

<RegistrationDate>
              <Year>2020</Year>
              <Month>8</Month>
              <Day>18</Day>
            </RegistrationDate>

我该怎么做?非常感谢。我很难做到这一点

XmlReader rdr = XmlReader.Create(new System.IO.StringReader(myString));

            while (rdr.Read())
            {

                switch (rdr.NodeType)
                {
                    case XmlNodeType.Element:
                        Console.WriteLine("<" + rdr.Name + ">");

                        break;
                    case XmlNodeType.Text:
                        Console.WriteLine(rdr.Value);

                        break;
                    case XmlNodeType.EndElement:
                        Console.WriteLine("...");
                        break;
                }
                count++;

            }

1 个答案:

答案 0 :(得分:1)

NB。我不懂C#所以我只能用简单的语言解释。

您可以简单地映射值,例如如果rdr.Name是BookHeader,那么写<h1>等.pp。如果您可以访问rdr.Name案例中的EndElement,则可以关闭相同的映射值,例如</h1>。否则,您必须自己跟踪开放元素并关闭最内层元素。

关于跳过某些xml结构的问题,请参阅我对该问题的评论。

请注意,我同意其他一些评论员认为此问题通常更适合XSLT解决方案。