2011-06-27 60 views
0

XML文件結構如下所示。如何在特定節中使用xmlreader執行xml解析

<?xml version="1.0" encoding="UTF-8"?> 
    <Application> 
      <Tabs> 
      <Tab name="1"> 
       <title>abcd</title> 
       <description>xyz</description> 
      </Tab> 
      <Tab name="2"> 
       <title>abcde</title> 
       <description>xyzw</description> 
      </Tab> 
      </Tabs> 
     <Files> 
     </Files> 
    </Application> 

我想在asp.net 2.0中只讀取使用XmlReader的Tabs部分。我感興趣的是標題和說明內容。總共有7個標籤可以在稍後增加。因此不能迭代具有固定值的計數變量。

+0

所有選項卡具有相同的價值屬性'name'? – naveen

+0

不用。謝謝指出 – gizgok

回答

0

如果你可以使用XPathDocument,你可以嘗試這樣的事情。

注意:如果您已有XmlReader實例,而不是使用StringReader,則可以使用構造函數過載,其取值爲XmlReader

string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> 
<Application> 
     <Tabs> 
     <Tab name=""1""> 
      <title>abcd</title> 
      <description>xyz</description> 
     </Tab> 
     <Tab name=""2""> 
      <title>abcd</title> 
      <description>xyzw</description> 
     </Tab> 
     </Tabs> 
    <Files> 
    </Files> 
</Application>"; 

string xpath = "/Application/Tabs/Tab/description"; 

XPathDocument doc = new XPathDocument(new StringReader(xml)); 
XPathNavigator nav = doc.CreateNavigator(); 
XPathNodeIterator nodeIterator = nav.Select(xpath); 

foreach (XPathNavigator item in nodeIterator) 
{ 
    Console.WriteLine(item.Value); 
} 
+0

會試試並告訴你。 – gizgok

0
using (XmlReader reader = XmlReader.Create(inputUrl)) 
    { 
    reader.MoveToContent(); 
    while (reader.Read()) 
    { 
     if (reader.NodeType == XmlNodeType.Element) 
     { 
     if (reader.Name == elementName) 
     { 
      XElement el = XNode.ReadFrom(reader) as XElement; 

      } 
     } 
     } 
    } 
    } 
} 
相關問題