Parse XML Backwards

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • lucasstark
    New Member
    • Mar 2008
    • 1

    Parse XML Backwards

    I have the following XML File: I want to parse the file so that I can add each node to a database: So I need to parse the bottom node and say:
    admissions, application. Then go up a level and extract "the admissions application"


    <Token Type="TOP" Dectiption="" >
    <Token Type="SBARQ" Dectiption="" >
    <Token Type="WHNP" Dectiption="" >
    <Token Type="WP" Dectiption="wh-pronoun" >What</Token>
    </Token>
    <Token Type="S" Dectiption="" >
    <Token Type="VP" Dectiption="Ver b Phrase" >
    <Token Type="VBP" Dectiption="Ver b, non-3rd ps. sing. present" >are</Token>
    <Token Type="NP" Dectiption="Nou n Phrase">
    <Token Type="NP" Dectiption="Nou n Phrase">
    <Token Type="DT" Dectiption="Det erminer" >the</Token>
    <Token Type="NNS" Dectiption="Nou n, plural" >fees</Token>
    </Token>
    <Token Type="PP" Dectiption="Pre positional Phrase">
    <Token Type="IN" Dectiption="Pre position/subordinate" >for</Token>
    <Token Type="NP" Dectiption="Nou n Phrase" >
    <Token Type="DT" Dectiption="Det erminer">the</Token>
    <Token Type="NNS" Dectiption="Nou n, plural">admissi ons</Token>
    <Token Type="NN" Dectiption="Nou n, singular or mass">applicati on</Token>
    </Token>
    </Token>
    </Token>
    </Token>
    </Token>
    </Token>
    </Token>
  • namit101
    New Member
    • Feb 2008
    • 7

    #2
    You should use some kind of recursive function, like:

    Code:
    public string ProcessXML(XmlNode node)
            {            
                if (node.ChildNodes.Count == 0)
                {
                    return node.InnerText;
                }
                else
                {
                    StringBuilder sentence = new StringBuilder();
                    for (int i = 1; i < node.ChildNodes.Count; i++)
                    {
                        sentence.Append(ProcessXML(node));
                    }
                    return sentence.ToString();
                }
            }
    *****note: I haven't tested this, it's just an example/pseudocode

    Comment

    Working...