我是c#的初学者,我想解析下面的xml使用XmlTextReader作为例子,然后把内容 对于stringbuilder的xml,如“Novel +精装+ 1 + Margatet + .... + 1 + SqlServer”。哪个善良而热心的人可以帮助我,谢谢,我搜索http://www.codeproject.com/KB/cs/xml_parsing.aspx, http://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>
答案 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语句!