我有一个关于阅读xml的问题。我的xml格式是这样的:
<?xml version="1.0" encoding="utf-8"?>
<object type="System.Windows.Forms" name="Form1">
<object>
<object type="label" name="lbl1">
<prop>firstname</prop>
</object>
<dataset>
<table name="tblOne">
<data>
<prop1>AA</prop1>
<prop2>BB</prop2>
<data>
</table>
<table name="tblTwo">
<data>
<prop1>CC</prop1>
</data>
</table>
</dataset>
<object>
<object type="textbox" name="txt1">
<prop>ABC</prop>
</object>
<dataset>
<table name="tblThree>
<data>
<prop1>DD</prop1>
<prop2>EE</prop2>
</data>
</table>
</dataSet>
</object>
我想检索数据集表中的所有数据,如
<prop1>AA</prop1>
<prop2>BB</prop2>
<prop1>CC</prop1>
<prop1>DD</prop1>
<prop2>EE</prop2>
然后我需要检查这些项目是prop1还是prop2,我将它插入到某个table.i我正在使用c#。我如何阅读xml?
答案 0 :(得分:3)
获取名称/值对:
var root = XElement.Parse(xml);
var pairs = (from prop in root.Descendants("data").Elements()
where prop.Name.LocalName.StartsWith("prop")
select new { Name = prop.Name.LocalName, Value = (string)prop }
).ToList();
然后只需迭代并添加到您要缩进的任何表中:
foreach(var pair in pairs) {
// use pair.Name and pair.Value
}
答案 1 :(得分:1)
我建议你搜索谷歌c# xml
。
答案 2 :(得分:0)
您可以使用xpath。 '// data'表达式将返回所有数据元素
XmlDocument xml = new XmlDocument();
xml.LoadXml(str); // replace str with xml
XmlNodeList xnList = xml.SelectNodes("//data");
foreach (XmlNode xn in xnList)
{
//Read <prop> nodes
}
答案 3 :(得分:0)
试试这个
var doc = XDocument.Parse(sourceText);
var result = doc.Descendants("data").Descendants();
答案 4 :(得分:0)
这是提示......它会起作用....
protected void Page_Load(object sender, EventArgs e)
{
this.data1();
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/xyz.xml"));
lblMsg.Text = ds.Tables[0].Rows[0]["data"].ToString();
}
private void data1()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/xyz.xml"));
int data = Int32.Parse(ds.Tables[0].Rows[0]["data"].ToString());
hits += 1;
ds.Tables[0].Rows[0]["data"] = data.ToString();
ds.WriteXml(Server.MapPath("~/xyz.xml"));
}