0

我目前正在循环一个 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
4

0 回答 0