OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] element census tool?

* Uche Ogbuji wrote:
>>  var elems = XDocument.Load(path).Root.DescendantsAndSelf();
>>  var attrs = elems.Attributes()
>>    .GroupBy(x => new { Attr = x.Name, Elem = x.Parent.Name });
>>  foreach (var elem in elems.GroupBy(x => x.Name))
>>    Console.WriteLine("{0} {1}", elem.Count(), elem.Key);
>>  Console.WriteLine();
>>  foreach (var attr in attrs)
>>    Console.WriteLine("{0} {1}/@{2}", attr.Count(),
>>      attr.Key.Elem, attr.Key.Attr);
>Just to be clear, that's C# with LINQ, right?  (IIRC LINQ is not part of the
>language def).

The core language specification won't even let you do file io, so yeah,
this is using System.Xml.Linq features. Note though that the SQL-like
language I could have used instead of method calls above is part of the
language specification (that is what I would consider "languaged inte-
grated query") the DOM-like object model for XML documents is not.

>> Though it would seem the GNU-ish way to solve this would be having a
>> tool that prints out all the element names and attribute/element paths
>> and then use, say, `sort | uniq -c` on it.
>Yeah, but if you've already gone through the exercise of parsing the XML, do
>you really save much by punting to pipes for the most generic bits?

It's more a matter of not having to write a special tool for this.
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Am Badedeich 7 · Telefon: +49(0)160/4415681 · http://www.bjoernsworld.de
25899 Dagebüll · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ 

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS