使用C#或Java读取XML文档

使用C#或Java读取XML文档,c#,java,xml,xml-parsing,C#,Java,Xml,Xml Parsing,我想阅读下面的XML格式,只需要一些属性,而不是全部。 例如: <Parts> - <Part> <Section>3003512</Section> <Mark>RP-103</Mark> <Length>4950</Length> - <Components> <Sectio

我想阅读下面的XML格式,只需要一些属性,而不是全部。 例如:

<Parts>
-   <Part>
        <Section>3003512</Section> 
        <Mark>RP-103</Mark> 
        <Length>4950</Length> 
        - <Components>
                <Section>3003512</Section> 
                <Mark>RP-103</Mark> 
                <Length>4950</Length>
                <Remark>System Generated </Remark>
              <Components />
            <Remark>No Comments </Remark>
        </Part>

-   <Part>
        <Section>3003512</Section> 
        <Mark>RP-103</Mark> 
        <Length>4950</Length> 
        <Components />
        <Remark>No Comments </Remark>
     </Part>
</Parts>

-   
3003512
RP-103
4950
- 
3003512
RP-103
4950
系统生成
没有评论
-   
3003512
RP-103
4950
没有评论
我想只读部分,并以表格格式标记。我正在使用下面的代码来阅读这篇文章,但它给出的错误表模式“Component”已经存在

        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("Mark");
        DataColumn dc1 = new DataColumn("Sections ");
        dt.Columns.Add(dc); 
        dt.Columns.Add(dc1);
        DataSet dSet = new DataSet();


        if (File.Exists(xmlpath2))
        {

            XmlTextReader Reader1 = new XmlTextReader(xmlpath2);



            dSet.ReadXml(Reader1, XmlReadMode.Auto);


            for (int i = 0; i < dSet.Tables[0].Rows.Count; i++)
            {
                DataRow rows = dSet.Tables[0].Rows[i];
                DataRow myRow = dt.NewRow();
                myRow["Mark"] = rows["Mark"];
                myRow["Sections "] = rows["Sections "];

                dt.Rows.Add(myRow);
            }


            GridView1.DataSource = dt;
            GridView1.DataBind(); 

        }
DataTable dt=newdatatable();
DataColumn dc=新的DataColumn(“标记”);
DataColumn dc1=新的DataColumn(“节”);
dt.Columns.Add(dc);
dt.Columns.Add(dc1);
数据集dSet=新数据集();
if(File.Exists(xmlpath2))
{
XmlTextReader Reader1=新的XmlTextReader(xmlpath2);
ReadXml(Reader1,XmlReadMode.Auto);
对于(int i=0;i
不久前也在做类似的事情:

希望会让你走上正轨

以下是一个使用以下方法的示例:

现在您可以创建
数据表了

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);
}
这将产生:

Mark     Sections 
RP-103   3003512 
RP-103   3003512 
RP-103   3003512 

它假定每个
后面都有一个单独的相应的
标记
。它还需要
System.Xml.Linq
System.Linq

有几个Xml库可以在这方面提供帮助。尝试搜索更多内容,然后回来询问。下定决心--Java或C######,因为给出的答案会因此选择而大不相同。源代码中所有多余的“空白”行是怎么回事。是否应该使代码运行更快?行[“节”]与标记不匹配。代码运行正常。谢谢。请让我知道如何在下面的代码中绑定XML文档中的三个值。var result=ele.substands(“Section”).Zip(ele.substands(“Mark”),(s,m)=>new{Section=s.Value,Mark=m.Value})@kuldeepverma我已经更新了答案,展示了如何创建
数据表。这里没有更多的帮助了。谢谢你,我已经这么做了。但我无法将更多的.4950列绑定到数据表中。
Mark     Sections 
RP-103   3003512 
RP-103   3003512 
RP-103   3003512