<Peoples>
<People>
<Name>RadheyJang</Name>
<Location>India</Location>
<Work>Software Developer</Work>
<Point>5</Point>
<details>
<People>
<Name>ArunaTiwari</Name>
<Location>India</Location>
<Work>SoFtwareCoder</Work>
<Point>3</Point>
<details/>
<Test>A</Test>
</People>
</details>
<Test>NA</Test>
</People>
</Peoples>
我可以使用下面的代码读取那个Xml。
XDocument xmlDoc = XDocument.Load(str);
var vrresult = from a in xmlDoc.Descendants("People")
select new
{
Name= a.Element("Name").Value,
Location= a.Element("Location").Value,
Point= a.Element("Point").Value
};
GridView1.DataSource = vrresult;
GridView1.DataBind();
但它也正在阅读细节的内容。我想跳过阅读详细信息元素中的内容。请让我知道如何跳过详细内容。
答案 0 :(得分:1)
你需要使用XPath ...
using System.Xml.XPath;
string xml = @"
<Peoples>
<People>
<Name>RadheyJang</Name>
<Location>India</Location>
<Work>Software Developer</Work>
<Point>5</Point>
<details>
<People>
<Name>ArunaTiwari</Name>
<Location>India</Location>
<Work>SoFtwareCoder</Work>
<Point>3</Point>
<details/>
<Test>A</Test>
</People>
</details>
<Test>NA</Test>
</People>
</Peoples>";
XDocument xmlDoc = XDocument.Parse(xml);
var vrresult = from a in xmlDoc.XPathSelectElements("/Peoples/People")
select new
{
Name = a.Element("Name").Value,
Location = a.Element("Location").Value,
Point = a.Element("Point").Value
};
答案 1 :(得分:0)
var ele = XElement.Parse(xml);
// change to XElement.Load if loading from file
var result = ele.Descendants("Section").Zip(ele.Descendannt("Mark"), (s,m) => new {Section = s.Value, Mark = m.Value}); Now you can create your DataTable:
var table = new DataTable();
var marks = new DataColumn("Mark");
var sections = new DataColumn("Sections");
table.Columns.Add(marks); table.Columns.Add(sections);
foreach (var item in result)
{
var row = table.NewRow();
row["Mark"] = item.Mark;
row["Sections"] = item.Section;
table.Rows.Add(row);
}
试试此代码..
答案 2 :(得分:0)
我唯一能想到的是XML不合法:
<Peoples>
<People> *You have an opening People tag here*
<Name>RadheyJang</Name>
<Location>India</Location>
<Work>Software Developer</Work>
<Point>5</Point>
<details> *You create a details tag here*
<People> *You generate the same tag inside of another People tag*
<Name>ArunaTiwari</Name>
<Location>India</Location>
<Work>SoFtwareCoder</Work>
<Point>3</Point>
<details/> *Then you close the details tag here*
<Test>A</Test>
</People>
</details> *Then you close another one, but there is not a second opening detail tag*
<Test>NA</Test>
</People>
</Peoples>
我不确定这是否有帮助,但您可能需要考虑修复XML。