1

XML ファイルを SQL サーバー データベースに挿入しようとしていますが、以下のコードの何が問題なのかまだわかりません。

私の XML ノード名は、author、title、genre、price、publish_date、description です。

上記のノード名を取得することで、ノード値を列に挿入できるように、データベース テーブルに列を作成したいと考えています。

私の 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();
}
4

1 に答える 1

0

おそらく、Row 要素の後に、作成者の前に空白の子テキスト ノードがあるためです。例: 次の XML では、Row と author の間に空白がありません。

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

しかし、次のようになる可能性があります (そうです、スペースと改行はしばしばカウントされます!)

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

ただし、これはパーサーの構成にも依存する可能性があります

于 2013-03-28T08:26:07.720 に答える