org.xml.sax.SAXParseException: cvc-elt.1.a: не удается найти объявление элемента - PullRequest
1 голос
/ 23 сентября 2019

Я хочу использовать файл XML, в котором есть параметры, и автоматически связывать его с полями компонента класса, чтобы в будущем его можно было повторно использовать в качестве класса конфигурации.Я опирался на сообщение: нажмите .

Мой файл файла configuration.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <server serverport="1111"/>
  <client clientport="1111">
    <ServerHost>localhost</ServerHost>
  </client>
</config>

Мои классы следующие:

@ImportResource(value = "classpath:configuration.xml")
@Configuration
@NoArgsConstructor
@Getter
public class Config {
  private Server server;
  private Client client;
}

Client.java

@Getter
public class Client {
  private @Value("#{clientport}") String clientPort;
  private String serverHost;
}

Server.java

@Getter
public class Server {
  private @Value("#{serverport}") String serverPort;
}

pom.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.Java</groupId>
  <artifactId>advanced</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <properties>
    <java.version>11</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

При таком подходе я получаю ошибкукак:

Line 2 in XML document from class path resource [configuration.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 9; cvc-elt.1.a: Cannot find the declaration of element 'config'.

и

Caused by: org.xml.sax.SAXParseException: cvc-elt.1.a: Cannot find the declaration of element 'config'.

Я немного растерялся, потому что, похоже, все выглядит хорошо, но я не могу найти источник этой ошибки.Я буду благодарен за предложение о том, как решить эту проблему в моем приложении и сделать его многократно используемым в качестве класса с параметрами конфигурации из файла XML.

РЕДАКТИРОВАТЬ: Если вы знаете другой подход для достижения желаемой цели, не стесняйтесь опубликовать его.

РЕДАКТИРОВАТЬ2: Я нашел обходной путь для этой проблемы, но я надеюсь, что будет другое решение, которое принесетжелаемый эффект: клик

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