2012-03-07 47 views
-1

说我有与XML一个XmlDocument所有的字符串:如何处理在一个XmlDocument

<office:body> 
    <text:p>One</text:p> 
    <text:p>two 
    <text:span>three 
     <text:line-break/>four 
     <text:line-break/>five 
     <text:line-break/>six 
    </text:span>seven 
    </text:p> 
    <text:p>eight</text:p> 
    <table:table> 
    <table:table-column> 
    <table:table-column> 
    <table:table-row> 
     <table:table-cell> 
     <text:p> 
      <text:span>nine</text:span> 
     </text:p> 
     </table:table-cell> 
     <table:table-cell> 
     <text:p> 
      <text:span>ten</text:span> 
     </text:p> 
     </table:table-cell> 
    </table:table-row> 
    </table:table> 
</office:body> 

我怎么能只提取的话,一次一个?

回答

0

您可以用XMLReader,这样做:

class Program { 

    static void Main() { 
     XmlReader reader = new XmlTextReader(new StringReader(Xml)); 
     while (reader.Read()) { 
      if (reader.NodeType == XmlNodeType.Text && reader.HasValue) { 
       Console.WriteLine(reader.Value.Trim()); 
      } 
     } 
    } 

    private const string Xml = @" 
     <root xmlns:office=""http://office"" 
      xmlns:text=""http://text"" 
      xmlns:table=""http://table""> 
     <office:body> 
      <text:p>One</text:p> 
      <text:p>two 
      <text:span>three 
       <text:line-break/>four 
       <text:line-break/>five 
       <text:line-break/>six 
      </text:span>seven 
      </text:p> 
      <text:p>eight</text:p> 
      <table:table> 
      <table:table-column/> 
      <table:table-column/> 
      <table:table-row> 
       <table:table-cell> 
       <text:p> 
        <text:span>nine</text:span> 
       </text:p> 
       </table:table-cell> 
       <table:table-cell> 
       <text:p> 
        <text:span>ten</text:span> 
       </text:p> 
       </table:table-cell> 
      </table:table-row> 
      </table:table> 
     </office:body> 
     </root>"; 
} 

您需要添加一个根标签来处理XML命名空间,并修正XML的规范格式错误这个工作。

+0

你指的是什么样的良构错误? – matthewk 2012-03-08 19:25:40

+0

@matthewk您的XML在两个''标记中缺少结束斜线。 – dasblinkenlight 2012-03-08 19:32:42

+0

谢谢。不过,这种解决方案不会分别得到“二”,“三”,“四”,“五”,“六”和“七”。 – matthewk 2012-03-08 20:10:33