Токенизация содержимого братьев и сестер в дереве DOM - PullRequest
1 голос
/ 20 ноября 2011

У меня есть план обхода dom-дерева в порядке пост-заказа, а затем, когда он проходит через братьев и сестер каждой глубины, для каждой группы братьев и сестер, я хочу получить для него количество элементов в текстовом содержимом.Чтобы прояснить ситуацию, давайте рассмотрим пример: например,

<?xml version="1.0" encoding="UTF-8"?> 
       <title text="title1"> 
           <comment1 id="comment1">
               <data1> this is an example</data1>
               <data2> this example tries to do a demo over a dom tree</data2>
           </comment1>
           <comment2 id="comment2">
               <data3> while it' beeing traversing in postorder fashion </data3>
               <data4> hope it works! </data4>
               <data5> :) </data5>
           </comment2>
       </title> 

. Я хочу узнать количество символов charcater для данных 1 и data2 вместе, а также для data3-5 togetehr.Вот код, который я написал до сих пор, чтобы пройти по дереву и вычислить значение TFIDF, но, как я уже говорил, я хочу найти TF для каждой группы братьев и сестер отдельно, есть какая-нибудь подсказка?заранее спасибо

lass tree{


    private static int total=0;
    private static double tf=0;
    private static double result=0;
   private static double  TFIDFresult = 0;


   static double TFIDF(int wordcount,String segment,String keyword)


   {

if(segment==null)
    return TFIDFresult;


    StringTokenizer tokenizer =new StringTokenizer(segment) ; 
    while(tokenizer.hasMoreTokens()){
       total++;
        if( tokenizer.nextToken().equals(keyword))
            wordcount++;
        tf= (double) wordcount / total;
       double inverseTF = Math.log10((float) wordcount / 4);
          TFIDFresult = (((double) wordcount / total * inverseTF ));
    }
    return TFIDFresult;
}


public static void check(Node node){
  if (node == null || node.getNodeName() == null)

    return;



  result= TFIDF(total, node.getNodeValue(), "this");

  check(node.getFirstChild());  



System.out.println(node.getNodeValue() != null && node.getNodeValue().trim().length() == 0 ? "" : node);

    check(node.getNextSibling());  

}



    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
        File file = new File("d:\\a.xml");
  DocumentBuilderFactory dbf =
  DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document document = db.parse(file);
  document.getDocumentElement().normalize();


  Node b=document.getFirstChild();
  check(b);
  System.out.println(result);



    }
}

ps: вручную я предположил, что количество документов в расчете по какой-то причине равно 4.

...