On 1/23/16 6:27 AM, Stefan Ram wrote:
> Mohammed Suleman khan <
salmank...@gmail.com> writes:
>> I am having a .yml file that has nested level navigation
>
> public final class Main
> {
>
> private static final java.lang.String source =
> "navigationItems:\n" +
> "-\n" +
> " link: /features\n" +
> " label: Features\n" +
> "-\n" +
> " link: /contact\n" +
> " label: Contact Us\n" +
> "-\n" +
> " link: /about\n" +
> " label: About Us\n" +
> "-\n" +
> " link: /services\n" +
> " label: Services\n" +
> " navigationItems:\n" +
> " -\n" +
> " link: /service-1\n" +
> " label: Service 1\n";
>
> public static void main(String args[]) throws Exception
> { final java.util.regex.Pattern p =
> java.util.regex.Pattern.compile
> ( "^ {6}([^ ].*)$", java.util.regex.Pattern.MULTILINE );
> final java.util.regex.Matcher m = p.matcher( source );
> while( m.find() )java.lang.System.out.println( m.group( 1 )); }}
>
> link: /service-1
> label: Service 1
>
Stefan: why are you using regex to parse Yaml? Yaml has a spec, and its
far more complex than your regex suggests.
Mohammed: The problem is that you're trying to represent a tree
structure as a list. Really you need:
class NavigationNode {
private List<NavigationNode> children;
private String label;
private String link;
}
Then you can use recursion to go through the list.
Hopefully this helps.