确定父元素XML C#

时间:2013-08-09 10:57:28

标签: c# xml xml-parsing

我正在循环遍历XML文档。结构如下所示(数据已更改)

<activity date="2013-07-05T06:42:37" name="view" host="00.000.00.000">
  <user id="EU-user@user.co.uk" name="U user" memberType="E" />
  <storageObject docId="0000-0000-0000" name="2. Extract Lease - 31.07.2003" size="1903885" fileExtension="pdf">
  <cabinet name="Company Intranet">NG-FGW7XX1Y</cabinet>
    <Matter>0000</Matter>
    <Client>X01659</Client>
    <Author>Joe Bloggs</Author>
  </storageObject>
</activity>

我需要做的是遍历每个activity元素,并打印每个子元素和属性中保存的信息。目前我有这个

        var root = doc.Root;


            foreach (XElement el in root.Elements().DescendantsAndSelf())
            {



                if (el.Value.Equals(""))
                {
                    //don't print anything, just move along, nothing to see here

                }
                else
                {
                    Console.WriteLine(el.Value);
                }
                //Console.WriteLine("  Attributes:");
                 if (el.HasAttributes == true)
                {

                    foreach (XAttribute attr in el.Attributes())
                    {

                        Console.WriteLine(attr.ToString());
                        //   Console.WriteLine(el.Elements("id"));
                    } 


            }

        }

这在某种程度上起作用,除了activity元素的结束没有明显的区别(即,一旦完成就打印出一面文本墙,我希望能够区分元素之间)。它还会在整个过程中两次打印cabinet元素,但作为子元素的连接版本,在循环之前单独打印出来。如下图所示

NG-FGW7XX1Y0000X01659Joe Bloggs
date="2013-07-05T06:42:37"
name="view"
host="00.000.00.000"
id="EU-user@user.co.uk"
name="U user"
memberType="E"
NG-FGW7XX1Y0000X01659Joe Bloggs
docId="0000-0000-0000"
name="2. Extract Lease - 31.07.2003"
size="1903885"
fileExtension="pdf"
NG-FGW7XX1Y
name="Company Intranet"
0000
X01659
Joe Bloggs

我需要能够循环遍历单个activity元素,并打印出所有元素和属性,而不使用连接的行。我还希望能够插入Console.WriteLine("------");,以便我可以在控制台上轻松查看每个活动的结束位置。有什么建议吗?

我循环使用元素的原因是某些记录有其他元素,否则将无法找到。

编辑:这应该是它的样子

date="2013-07-05T06:42:37"
name="view"
host="00.000.00.000"
id="EU-user@user.co.uk"
name="U user"
memberType="E"
docId="0000-0000-0000"
name="2. Extract Lease - 31.07.2003"
size="1903885"
fileExtension="pdf"
NG-FGW7XX1Y
name="Company Intranet"
0000
X01659
Joe Bloggs

0 个答案:

没有答案