当您不知道结构时,通过Xdocument迭代



当您不知道XML结构是什么(使用C#(时,是否有任何方法可以通过Xdocument迭代?当您知道结构时,有很多示例,例如这个问题的答案:C# - 选择Linq和C#foreach XML Node

的XML后代

我尝试了下面的后代(" a"(,其中a是以下示例 - 在我的foreach中,我返回了一个名称为root的元素,值为"所有值conde"一个字符串'

我这样做的原因是要匿名某些我知道名称的节点。我正在加载的Xdocument可以具有任何形状 - 因此,我决定仅创建一个列表,用户可以添加其中包含这些敏感元素。

我要避免的解决方案是用户为敏感字段创建XPath。

XML也很敏感,所以我不能字面上的在线分享,但一个例子(5分(会看起来。

   <A>
     <B>
       <C>
         <D>
           <dee>value1</dee>
           <doo>value2</doo>
           <date>value3</date>
           <time>value4</time>
         </D>
       </C>
     </B>
     <E>
       ...ommited..this doc is 5000 lines long with 500~ unique node names
     </E>
     ............
     </A>

所以有没有使用后代的方法可以迭代?

使用.descendants((迭代每个元素。

xmlDoc.Root.Descendants()
    .ToList()
    .ForEach(e => Console.WriteLine(e.Name));

这是我走的方式。

后代意味着您在手动之前就知道节点的结构。即使有一个空的方法调用后代(应该从根本上得到一切(也没有给我我的期望。

以下代码应适用于任何XML文档,而不知道结构。

                XmlDocument doc = new XmlDocument();
                doc.Load(file);
                using (XmlReader reader = new XmlNodeReader(doc))
                {
                    while (reader.Read())
                    {
                        currentNodeName = reader.Name;

最新更新