2013-03-28 5 views
1

Я пытаюсь вставить файл XML в базу данных SQL-сервера, но до сих пор не знаю, что случилось с моим кодом ниже.Как вставить XML-файл NodeValue в базу данных SQL-сервера?

Мои имена узлов XML: автор, название, жанр, цена, publish_date, описание.

Получив указанные имена узлов, я хочу создать столбцы в моей таблице базы данных, чтобы я мог вставлять значения узлов в столбцы.

Мой XML файл выглядит следующим образом:

<?xml version="1.0"?> 
<Results> 
<Row> 
    <author>Gambardella, Matthew</author> 
    <title>XML Developer's Guide</title> 
    <genre>Computer</genre> 
    <price>44.95</price> 
    <publish_date>2000-10-01</publish_date> 
    <description>An in-depth look at creating applications 
    with XML.</description> 
</Row> 

<Row> 
    <author>Corets, Eva</author> 
    <title>Maeve Ascendant</title> 
    <genre>Fantasy</genre> 
    <price>5.95</price> 
    . 
    . 
    . 
    . 
    .  
    </Row> 
    </Results> 

Java Код для вставки в базу данных:

try{ 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 

    Connection con = DriverManager.getConnection(
           "jdbc:sqlserver://localhost:1433;user=joy\studentsdatabaseName=EMPLOYEEintegratedSecurity=t rue;"); 

    Statement st=con.createStatement(); 

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 

    DocumentBuilder db = dbf.newDocumentBuilder(); 

    Document doc = db.parse("d:/books.xml"); 

    NodeList n1= doc.getElementsByTagName("Row"); 
    for(int i=0;i<n1.getLength();i++){ 
     String st1= n1.item(i).getFirstChild().getNodeValue(); 

     System.out.println(st1); // i dont know why it doesnt print anything ? 

     st.executeUpdate("insert into checktbl(sub)values('"+st1+"')"); 

    } 
} 
catch(Exception e){ 
    e.printStackTrace(); 
} 

ответ

0

Может быть, потому что есть пробельные дочерний текстовый узел перед автором, после того, как ряд элементов. Например: следующий XML не имеет пробелы между Роу и автор:

<Row><author>blah</author></Row> 

Но после может иметь (да пробелы и разрывы строк часто имеет значение!)

<Row> 
    <author>blah</author></Row> 

Но это может зависеть от конфигурации анализатора, слишком

+0

oh yes gerrytan Я сделал изменение, которое вы сказали, но теперь он печатает нуль – stom