我编写了读取我的XML文件的函数。我可以写得更普遍,更短吗?
我的功能:
XmlTextReader reader = new XmlTextReader ("../../database.xml");
reader.ReadStartElement("eshop");
while (reader.Read ()) {
if (reader.IsStartElement ()) {
reader.ReadStartElement("item");
reader.ReadStartElement ("id");
string elem = reader.ReadString ();
reader.ReadEndElement ();
reader.ReadStartElement ("name");
string name = reader.ReadString ();
reader.ReadEndElement ();
reader.ReadStartElement ("cost");
string cost = reader.ReadString ();
reader.ReadEndElement ();
Console.WriteLine (elem + " - name : " + name + " - cost: " + cost);
}
}
示例XML:
<?xml version="1.0" encoding="UTF-8" ?>
<eshop>
<item>
<id>1</id>
<name>some product 1</name>
<cost>89.90</cost>
</item>
<item>
<id>2</id>
<name>some product 2</name>
<cost>95.00</cost>
</item>
<item>
<id>3</id>
<name>some product 3</name>
<cost>12.00</cost>
</item>
</eshop>
如果我要添加新元素,我不知道如何使这个函数更小。现在我必须添加功能,如果我想将我的xml文件升级到其他元素:
reader.ReadStartElement ("secondelement");
string secondelement = reader.ReadString ();
reader.ReadEndElement ();
请帮忙。谢谢。
答案 0 :(得分:1)
读取XML的最简单方法不是使用XmlReader,而是使用LINQ to XML(使用System.Xml.Linq
):
var d = XDocument.Load("../../database.xml");
foreach (var e in d.Root.Elements("item"))
{
Console.WriteLine(
(string)e.Element("id") +
" - name : " + (string)e.Element("name") +
" - cost: " + (string)e.Element("cost"));
}
答案 1 :(得分:0)
看看XDocument类:
http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v=vs.110).aspx
然后,您应该可以使用LINQ来读取特定的元素/属性。
类似的问题:
答案 2 :(得分:0)
是的,您可以使用LINQ to XML:
XDocument xDoc = XDocument.Load("../../database.xml");
foreach(var item in xDoc.Descendants("item"))
{
string id= (string)item.Element("id");
string name= (string)item.Element("name");
string cost= (string)item.Element("cost");
Console.WriteLine("{0} name - {1} - cost {2}",id,name,cost);
}