2011-04-29 145 views
1

問題1:假設我正在閱讀XmlNodeType.Text,我想知道它的標記節點名稱。如何在不移動光標的情況下做到這一點?另外我怎樣才能知道當前節點標籤的父標籤?如何使用xml讀取器讀取XML文件?

問題2:假設我正在讀取xml文件,並且想從特定的節點標記開始。怎麼可以做到這一點?

問題3:如果你有xsd文件,有沒有簡單的方法來上傳xml文件?我使用C#.NET 3.5和SQL Server 2008

這是我寫到目前爲止:

XmlTextReader reader = new XmlTextReader("datafile.xml"); 
while (reader.Read()) 
{ 
    if (reader.NodeType == XmlNodeType.Element) 
    { 
     Console.Write(reader.Name); 
    } 
    else if (reader.NodeType == XmlNodeType.Text) 
    { 
     Console.Write("/"+reader.Name+"/" + reader.Value+"/"); 
    } 
    else 
    { 
     if (reader.NodeType == XmlNodeType.EndElement) 
     { 
      Console.WriteLine(reader.Name); 
      Console.ReadLine(); 
     } 
    } 
} 
reader.Close(); 

請讓我知道如果你需要更多的澄清

+1

與XPath或LINQ to XML相比,XMLReader實際上非常麻煩。我建議你看看那些,也作爲替代。 – Mikecito 2011-04-29 04:03:42

回答

2

XmlReader是無狀態的,僅保留有關當前節點的信息,所以如果您正在閱讀元素的內容並希望知道元素名稱,則需要確保在讀取開始元素節點時以某種方式保留元素名稱。

如果您想知道父元素的名稱,您需要在閱讀xml文檔時保留這些信息/狀態。

如果你想開始閱讀一個特定的節點,你應該通過節點讀取xml文檔節點,直到你閱讀你想要開始的節點。

最終通過XmlReader類讀取XML比其它的更困難,一般來說你只會用XmlReader如果XML文檔使用替代品的一個非常大的,在其他大多數情況下:

欲瞭解更多信息,請參閱XML Serialization in the .NET Framework

如果你真的使用XmlReader,那麼你應該閱讀Using the XmlReader Class