如何用c#中的XmlTextReader解析xml

时间:2010-10-15 11:41:01

标签: c# xml

我是c#的初学者,我想解析下面的xml使用XmlTextReader作为例子,然后把内容 对于stringbuilder的xml,如“Novel +精装+ 1 + Margatet + .... + 1 + SqlServer”。哪个善良而热心的人可以帮助我,谢谢,我搜索http://www.codeproject.com/KB/cs/xml_parsing.aspxhttp://www.codeproject.com/info/search.aspx?artkw=XmlTextReader&vidlst=64%2c65%2c69%2c81%2c94&sa_ao=False&sa_so=17&sa_as=1%2c3&aidlst=64%2c65%2c69%2c81和谷歌用xmlTextReader读取xml,结果不是我需要的,如果我有一些逻辑来处理这个问题,我不能要求有人解析it.im无法读取正确的节点。如何让它移动到适当的节点

 <?xml version="1.0"?>
   <Bookstore>
    <Book Genre="Novel" Style="hardcover">
     <author id="1">
         <first-name>Margaret</first-name>
         <last-name>Atwood</last-name>
     </author>
     <Title>The Handmaid's Tale</Title>
     <Price>$19.25</Price>
   </Book>
  <GeneralSettings> 
     <RecentID>0</RecentID> 
      <LastUpdate>1967-08-15</LastUpdate> 
      <EnableAutoUpdate>1</EnableAutoUpdate> 
      <ShareSum>0</ShareSum> 
  </GeneralSettings> 
<CodeCatag ID="1" Description="SqlServer"> 
</Bookstore>

2 个答案:

答案 0 :(得分:0)

这有点固定,但可以正常工作

var sb = new StringBuilder();
var root = XElement.Parse(xml);

sb.Append(root.Elements("Book").Attributes("Genre").Value);
sb.Append("+");
sb.Append(root.Elements("Book").Attributes("Style").Value);
sb.Append("+");
sb.Append(root.Elements("Book").Elements("author").Attributes("id").Value);

等...

答案 1 :(得分:0)

你也可以试试LinqToXml。我已经汇总了一个快速示例,该示例适用于您在书店根元素中有多本书的情况:

XDocument doc = XDocument.Load(@"c:\\temp\test.xml");
        var query = from c in doc.Descendants("Book")
                    select c;

        foreach(XElement xe in query)
        {
            Console.WriteLine(xe.Name + "+" + xe.Attribute("Genre").Value + "+" + xe.Attribute("Style").Value);
            Console.WriteLine(xe.Element("author").Attribute("id").Value);
//etc etc etc
        }

显然,在最终解决方案中,Console.WriteLine语句将替换为StringBuilder.Append语句!