【问题标题】:How to read xml file up to a point so that I can write the same to another xml file later如何在一定程度上读取 xml 文件,以便以后可以将其写入另一个 xml 文件
【发布时间】:2012-07-01 10:04:36
【问题描述】:

很多类似的线程并不是我想要的,或者它们与 Linq 打交道。我正在使用 .NET 2.0

我有一个更像模板的 XML 文件。我需要将 XML 写入另一个文件,但我需要它来引用模板 XML 文件以进行初始格式设置。

像这样:

我的模板文件:

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/2006/04/ttaf1" xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling" xml:lang="en">
  <head>
    <styling>
      <style id="s1" tts:fontFamily="SchoolHouse Cursive B" tts:fontSize="16" tts:fontWeight="normal" tts:fontStyle="normal" tts:textDecoration="none" tts:color="white" tts:backgroundColor="blue" tts:textAlign="center" />
      <style id="s2" tts:fontFamily="SchoolHouse Cursive B" tts:fontSize="16" tts:fontWeight="normal" tts:fontStyle="normal" tts:textDecoration="none" tts:color="yellow" tts:backgroundColor="black" tts:textAlign="center" />
   </styling>
  </head>
<body id="s1" style="s1">
  <div xml:lang="uk">
      <p begin="00:00:00" end="00:00:04">Hi! </p>
      <p begin etc............</p>
  </div>
 </body>
</tt>

我需要阅读第一部分直到&lt;p begin="00:00:00" end="00:00:04"&gt;Hi! &lt;/p&gt;(不包括该行)。我需要进入任何 .NET 类型,以便可以将其传递给将它们写入另一个 XML 文件的函数。

注意:我不想逐个节点或逐个元素地读取模板 XML 文件。我想要一个通用的解决方案,因为 XML 的初始部分可以是任何东西。

我试过了:

XmlTextReader reader = new XmlTextReader(templateFile);
var list = new Something(); //what type would be ideal
while (reader.Read())
{
    if (reader.LocalName == "p")
       break;

    if (reader.LocalName == "")
       continue;

    list.Add(??); 
    //how do I read the rest here?
}

我怎样才能写出同样的东西?

【问题讨论】:

  • 为什么要投反对票?复制?写得不好?还是家庭作业?
  • 尚不清楚您要做什么,但this MSDN article 是此类事情的绝佳资源。
  • @DavidBrabant 我已经写了我尝试过的内容。进一步尝试我不知道,因此问题。正如我在问题中指出的那样,我并不是要求这个特定的解决方案。如果是这样,我可以得到像reader.GetAttributes 这样的值。但是我需要一个通用的解决方案,比如即使节点根本没有属性,它也会将它读取到字符串左右。
  • @RichardTowers 好的,感谢您的链接。你能告诉我什么不清楚吗?
  • 你想要什么作为你的输出?直到第一个 p 标记的所有 XML?还是代表它的对象?还是别的什么?

标签: c# xml xml-parsing .net-2.0


【解决方案1】:

您似乎想以非 XML 有效的方式使用 XML 文件。没有 XML 阅读器或工具可以让您使用未封闭的 &lt;body&gt;&lt;div&gt; 标记。

我会考虑将其视为文本文件,但是您依赖源中的换行格式。

缺点是你在写东西时需要继续使用它作为文本,但我看不出有什么办法。

【讨论】:

  • Henk,它根本没有关闭。我只给出了一部分。它真的关闭了。我会进行编辑
  • 看起来仍然很不封闭。
  • Henk,你能告诉我还有什么要关闭的吗?
  • 直到&lt;p...&gt; 的部分的打开标签多于关闭标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多