如何读取xml文件到一个点,以便我以后可以将其写入另一个xml文件

时间:2012-07-01 10:04:37

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

许多类似的线程并不完全是我想要的或者他们处理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>

我需要阅读第一部分<p begin="00:00:00" end="00:00:04">Hi! </p>(不包括该行)。我需要进入任何.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?
}

我怎样才能写出相同的内容?

1 个答案:

答案 0 :(得分:1)

好像你想以一种非XML有效的方式使用XML文件。没有XML阅读器或工具可以让您使用未关闭的<body><div>标记。

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

缺点是你需要在写东西时继续使用它作为文本,但我没有看到解决方法。