2012-09-17 196 views
1
<Reports> 
    <Databases> 
    <Database>Axxest</Database> 
    <Database>Axxest2</Database> 
    </Databases> 
</Reports> 

如何閱讀AxxestAxxest2使用C#這樣寫的xml文件?使用C#如何讀取XML文件

我試試這個:

XmlDocument xld = new XmlDocument(); 
xld.Load(XmlPath); 
XmlNodeList xnl = xld.SelectSingleNode("Reports").ChildNodes; 
tableList.Clear(); 
foreach (XmlNode xn in xnl) 
{ 
    tableList.Add(xn.InnerText); 
} 

但蹊蹺的?

+0

XmlDocument xld = new XmlDocument(); xld.Load(XmlPath); XmlNodeList xnl = xld.SelectSingleNode(「BackupTables」)。ChildNodes; tableList.Clear(); foreach(xml中的XmlNode xn) { tableList.Add(xn.InnerText); } –

+0

好的,請包括你在將來的問題中馬上試過的東西。並且請始終指定究竟是什麼*錯誤,以及在哪一行以及什麼信息。這將大大提高你獲得合適的答案和良好的解釋的機會:-) –

回答

0

Documentation's Example

StringBuilder output = new StringBuilder(); 

String xmlString = 
     @"<?xml version='1.0'?> 
     <!-- This is a sample XML document --> 
     <Items> 
      <Item>test with a child element <more/> stuff</Item> 
     </Items>"; 
// Create an XmlReader 
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString))) 
{ 
    XmlWriterSettings ws = new XmlWriterSettings(); 
    ws.Indent = true; 
    using (XmlWriter writer = XmlWriter.Create(output, ws)) 
    { 

     // Parse the file and display each of the nodes. 
     while (reader.Read()) 
     { 
      switch (reader.NodeType) 
      { 
       case XmlNodeType.Element: 
        writer.WriteStartElement(reader.Name); 
        break; 
       case XmlNodeType.Text: 
        writer.WriteString(reader.Value); 
        break; 
       case XmlNodeType.XmlDeclaration: 
       case XmlNodeType.ProcessingInstruction: 
        writer.WriteProcessingInstruction(reader.Name, reader.Value); 
        break; 
       case XmlNodeType.Comment: 
        writer.WriteComment(reader.Value); 
        break; 
       case XmlNodeType.EndElement: 
        writer.WriteFullEndElement(); 
        break; 
      } 
     } 

    } 
} 
OutputTextBlock.Text = output.ToString(); 
1

嘗試SelectNodes方法和XPath

XmlDocument xld = new XmlDocument(); 
xld.Load(XmlPath); 
XmlNodeList xnl = xld.SelectNodes("Reports/Databases/Database"); 
foreach (XmlNode xn in xnl) 
{ 
    tableList.Add(xn.InnerText); 
} 
0

如果你想找到一個XML文件中的一些節點上,您可以使用XPath查詢,這裏是所有你需要在w3 schools

如果你調試了代碼,你可以發現xnl的計數是1,它只包含「Databases」節點。 「SelectSingleNode」表示選擇一個節點,並且在您的代碼中,首先選擇「Reports」,然後返回其只包含「數據庫」的子節點。您可以嘗試Ria的代碼,使用SelectNodes而不是SelectSingleNode。但你仍然可以使用「SelectSingleNode」,試試這個:

XmlNodeList xnl = xld.SelectSingleNode("Reports/Databases").ChildNodes; 

希望對你有所幫助。