【问题标题】:I need the data received from the XML file to be saved to the database. I wrote the code, but I can't save the received data to the database:我需要将从 XML 文件接收到的数据保存到数据库中。我写了代码,但是我无法将接收到的数据保存到数据库中:
【发布时间】:2021-08-30 14:51:04
【问题描述】:
@Autowired
  private MyRepository myRepo; //Inject your repo in service


  @Override
  public void parseSnFile(String fileName) {    

      //...

      for (int temp = 0; temp < list.getLength(); temp++) {
             Node node = list.item(temp);
             if (node.getNodeType() == Node.ELEMENT_NODE) {
                 Element element = (Element) node;
                 String id = element.getElementsByTagName("uid").item(0).getTextContent();
                 String lastName = element.getElementsByTagName("lastName").item(0).getTextContent();
                 String snType = element.getElementsByTagName("snType").item(0).getTextContent();
                 String programList = element.getElementsByTagName("program").item(0).getTextContent();

                 MyEntity entity = new MyEntity(id, lastName, snType, program); //serealize your data into entity
                 myRepo.save(entity) //saving to database
                 System.out.println(id + " " + lastName + " snType " + snType + " programList " + programList);

此代码有效,但我有一个问题。在XML文件中,与lastName相关的部分字段为空,即为空值。当我尝试跑步时,我有一个NullPointerException。如何设置条件以使项目不会崩溃,但 null 值只是一个空格并且数据被进一步写入...

【问题讨论】:

  • 此代码有效,但我有一个问题。在 XML 文件中,一些与 lastName 相关的字段是空的,即它们有一个空值。当我尝试运行时,我有一个 NullPointerException。如何设置条件以使项目不会崩溃,但 null 值只是一个空格并且数据被进一步写入......
  • 也许应该是这样的:
  • 您可以Edit您的问题并添加所有详细信息。
  • 字符串姓氏 = ?; if(lastName != null) { lastName = element.getElementsByTagName("lastName").item(0).getTextContent(); }
  • 您的 XML 看起来如何?我打赌你可以用 JAXB 映射它,而不必自己解析它

标签: java xml spring jpa


【解决方案1】:

确保它默认为空String

String lastName = null;
if ((element.getElementsByTagName("lastName") != null) && (element.getElementsByTagName("lastName").item(0) != null)) {
    String lastName = element.getElementsByTagName("lastName").item(0).getTextContent();
}

【讨论】:

  • 我在表中有两个字段 - lastName 和 firstName。我还认为将 lastName 和 firstName 字段加入一列。它也不起作用))))你能帮忙吗?))))
  • @Alexander 你打算改变表格的结构吗?
  • 是的。我需要将 lastName 和 firstName 连接在一列中 - fullName
  • @Alexander 您可以执行alter table yourtable add column compositeName text; update yourtable set compositeName = concat(coalesce(concat(firstname, ' '), ''), coalesce(lastName, '')); 之类的操作,然后创建插入和更新trigger 以强制执行compositeName 规则以供将来插入和更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2016-11-24
  • 1970-01-01
相关资源
最近更新 更多