Java / Jsp XML Dom - PullRequest
       7

Java / Jsp XML Dom

0 голосов
/ 02 марта 2010

похоже, мне снова нужна помощь! : - /

Я пытаюсь прочитать этот XML-файл с помощью Java / Jsp:

<?xml version="1.0" encoding="iso-8859-1"  ?>
<universal_campaign>
    <campaign_details>
        <campaign_id></campaign_id>
        <campaign_title>Test Campaign</campaign_title>
        <campaign_sdate>2010-01-21</campaign_sdate>
        <campaign_edate>2010-01-25</campaign_edate>
        <campaign_priority>Normal</campaign_priority>
    </campaign_details>

    <campaign_schedule>
        <schedule_sdate>2010-01-25</schedule_sdate>
        <schedule_edate>2010-01-30</schedule_edate>
        <schedule_priority>Normal</schedule_priority>

        <schedule_content>
            <content_name>Wallpaper_A</content_name>
            <content_filename>WP_A.jpg</content_filename>
        </schedule_content>

        <schedule_content>
            <content_name>Screensaver</content_name>
            <content_filename>SCS.gif</content_filename>
        </schedule_content>


        <schedule_zone>universal.001 test 001</schedule_zone>
        <schedule_zone>universal.001 test 002</schedule_zone>
        <schedule_zone>universal.001 test 003</schedule_zone>
    </campaign_schedule>

</universal_campaign>

Вот мой код Java / Jsp:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(fileName);
NodeList nl, nl2;
NodeList campaign_details = doc.getElementsByTagName("universal_campaign");
String res = "";

for(int i = 0;i<campaign_details.getLength();i++){

  nl = campaign_details.item(i).getChildNodes();

  for(int j = 0; j<nl.getLength();j++){                            
    nl2 = nl.item(j).getChildNodes();

      for(int k = 0; k<nl2.getLength();k++){
        res += nl2.item(k).getNodeName()+": "+nl2.item(k).getNodeValue()+"<br />";
      }
   }

}

Но когда я вывожу Res строки, я получаю:

#text: 
campaign_id: null
#text: 
campaign_title: null
#text: 
campaign_sdate: null
#text: 
campaign_edate: null
#text: 
campaign_priority: null
#text: 
#text: 
schedule_sdate: null
#text: 
schedule_edate: null
#text: 
schedule_priority: null
#text: 
schedule_content: null
#text: 
schedule_content: null
#text: 
schedule_zone: null
#text: 
schedule_zone: null
#text: 
schedule_zone: null
#text: 

И я не понимаю ... как getNodeName () может вернуть имя узла, но getNodeValue () возвращает null ....? Пожалуйста, помогите мне, я сделал много поисков и неудачных попыток, прежде чем публиковать здесь, но ничего не получалось ....: - /

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Дело в том, что получаемый вами узел не является самим текстовым узлом. Это Element и getNodeValue вернет ноль (см. Таблицу здесь ) Вместо этого вам придется использовать getTextContent.

2 голосов
/ 02 марта 2010

Используйте getTextContent() или, что еще лучше, используйте лучший API XML (на ум приходит jdom ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...