我试着学春天.我关注此网站http://www.roseindia.net/spring/spring3/spring-3-hello-world.shtml
我试过一个例子.我正在使用下面的一些内容,但这里显示:
不推荐使用XmlBeanFactory类型
作为替代方案,我必须使用什么?
public class SpringHelloWorldTest {
public static void main(String[] args) {
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));
Spring3HelloWorld myBean = (Spring3HelloWorld)beanFactory.getBean("Spring3HelloWorldBean");
myBean.sayHello();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开始一个新的项目,我有第三方XSD.我的Java应用程序需要生成符合此XSD的XML消息,并读取符合此XSD的传入XML消息.在过去,我使用了Apache XMLBeans(http://xmlbeans.apache.org/).看起来XMLBeans已经退役了.现在已经退役的XMLBeans有什么好的替代品?我在其他项目中使用过XStream,但我不记得XStream能够从XSD生成Java类,所以我认为对于这个用例,它不是XMLBeans的好选择.我在XSD中定义了数百种类型,并且非常希望不必创建数百个Java类来手动用Java表示它们.
换句话说,使用此处给出的XStream示例:http://x-stream.github.io/tutorial.html,我在XSD中定义了Person类型(以及其他99个).使用XMLBeans我可以生成Java类来表示这些对象但是使用XStream我需要手动或使用其他工具来创建Java类(例如Person).在这种情况下我应该使用什么工具?
任何帮助将不胜感激.
谢谢,约翰
你用什么来将XML绑定到Java?JAXB,Castor和XMLBeans是一些可用的选择.我见过的比较都是三四年了.我愿意接受其他建议.编组/解组的性能和易用性是特别令人感兴趣的.
澄清:我不仅希望看到您使用的框架,而且还希望看到使用其中一个框架的原因.
我有一个使用Apache Xmlbeans进行数据绑定的项目.目前很简单,它只有src/main/xsd中的一些Schema-Files和src/main/xsdconfig中的xsdconfig.
我想将生成的类包含在生成的jar-File中.如果我指定xmlbeans目标,它可以工作:"mvn xmlbeans:xmlbeans package" - >使用xmlbeans类创建一个Jar
但我想在正常的构建周期内执行此操作:"mvn package" - >应该使用xmlbeans类创建一个jar,但不会.
pom如下:
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.test</groupId>
<artifactId>xmlbeans-maven-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>maven-xmlbeans-plugin</artifactId>
<version>2.3.3</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
我试图将它手动绑定到"generate-sources"(以及"编译"阶段)阶段,但它不起作用.
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.leradon</groupId>
<artifactId>xmlbeans-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>maven-xmlbeans-plugin</artifactId>
<version>2.3.3</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xmlbeans</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
我如何配置插件,以便当我运行"mvn …
我已经从xsd文件生成了带有XMLBeans的类,并将它们打包在一个jar文件中.然后我在eclipse中将jar添加到项目类路径中,所有内容都编译并运行正常.我使用Maven从我的项目中构建了一个独立的jar文件,并且构建成功,但是当我尝试运行它时,我收到此错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.oblicore.oblisync.resolutions.TestsDocument$Factory.parse(TestsDo
cument.java:126)
at com.oblicore.oblisync.handlers.TransferEntitiesHandler.getResolution(
TransferEntitiesHandler.java:117)
at com.oblicore.oblisync.handlers.TransferEntitiesHandler.resolveConflic
ts(TransferEntitiesHandler.java:103)
at com.oblicore.oblisync.main.Orchestrator.run(Orchestrator.java:107)
at com.oblicore.oblisync.main.Orchestrator.main(Orchestrator.java:58)
Caused by: java.lang.RuntimeException: Cannot load SchemaTypeSystem. Unable to l
oad class with name schemaorg_apache_xmlbeans.system.s8B21CFFFCFED0B2438C2585C61
F113F7.TypeSystemHolder. Make sure the generated binary files are on the classpa
th.
at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:7
83)
at com.oblicore.oblisync.resolutions.TestsDocument.<clinit>(TestsDocumen
t.java:19)
... 5 more
Caused by: java.lang.ClassNotFoundException: schemaorg_apache_xmlbeans.system.s8
B21CFFFCFED0B2438C2585C61F113F7.TypeSystemHolder
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:7
69)
... 6 more
Run Code Online (Sandbox Code Playgroud)
缺少的类是在我用XmlBeans创建的jar中,我如何告诉maven将它添加到它从我的项目创建的jar中?
我尝试在下面的帖子中回答,但我没有“声誉”,也确实没有时间去寻找 10 个问题来回答。 运行时异常 - POI 5 和 xmlbeans
对于 WebLogic 服务器中的 POI 5 和 XMLBeans 4(或 5),存在类加载器问题,它将尝试使用 WebLogic 服务器模块目录中的底层 XMLBeans jar。
在 EAR 中打包时,您可以使用 weblogic-application.xml 描述符来覆盖类加载。但是,在这里列出 POI 和依赖包将导致进一步的错误。SchemaTypeLoaderImpl 类正在新的 (org.apache.xmlbeans.metadata) 和旧的 (schemaorg_apache_xmlbeans) 包中查找。因此,您还应该将旧包包含在覆盖列表中。
现在,SchemaTypeLoaderImpl 还会尝试使用 ClassLoader.getResource 加载 TypeSystemHolder 类,然后再尝试使用 Class.forName 查找它。要解决此问题,您需要防止它找到旧类,因为以前的包覆盖仅使您的应用程序捆绑库优先于底层服务器库。它并没有阻止它找到这些过时的类并尝试加载它们。这可以通过使用这些资源来完成。
请注意,我仅使用基本的 XSSFWorkbook XLS 功能!如果您使用其他 POI 功能,您可能需要追踪其他资源。
例如,以下 weblogic-application.xml 描述符允许您的应用程序使用捆绑的 POI/XMLBeans 库并忽略旧资源。
<prefer-application-packages>
<package-name>org.apache.commons.collections4.*</package-name>
<package-name>org.apache.commons.compress.*</package-name>
<package-name>org.apache.poi.*</package-name>
<package-name>org.apache.xmlbeans.*</package-name>
<package-name>org.openxmlformats.*</package-name>
<package-name>schemaorg_apache_xmlbeans.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>schemaorg_apache_xmlbeans/system/sXMLCONFIG/TypeSystemHolder.class</resource-name>
<resource-name>schemaorg_apache_xmlbeans/system/sXMLLANG/TypeSystemHolder.class</resource-name>
<resource-name>schemaorg_apache_xmlbeans/system/sXMLSCHEMA/TypeSystemHolder.class</resource-name>
<resource-name>schemaorg_apache_xmlbeans/system/sXMLTOOLS/TypeSystemHolder.class</resource-name>
</prefer-application-resources>
Run Code Online (Sandbox Code Playgroud) 我在执行一些依赖于生成的xmlbeans类的代码时遇到了RuntimeException.我无法弄清楚这是不是:
xbean.jar版本在构建和执行环境中是相同的.有人见过这个或有任何想法吗?
谢谢.
...snip... Caused by: java.lang.RuntimeException: Could not instantiate SchemaTypeSystemImpl (java.lang.reflect.InvocationTargetException): is the version of xbean.jar correct? at schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.loadTypeSystem(Unknown Source) at schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.(Unknown Source) ... 38 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) ... 40 more Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Could not locate compiled schema resource schemaorg_apache_xmlbeans/system/s2B8331230CBD98F4933B0B025B6BF726/index.xsb (schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.index) - code 0 at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.(SchemaTypeSystemImpl.java:1504) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260) at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.(SchemaTypeSystemImpl.java:183) ... 44 more ...snip...
我继承了一个基于CXF/Hibernate/JBoss的项目,其中包含一个名为的文件名database.xsd
.我梳理了项目以找出系统中使用的子系统/组件,database.xsd
但是在maven-war-plugin使用的文件中只产生了一个引用来创建WAR文件(webapp-cache.xml).
对我来说,这表明database.xsd
某些框架或插件需要一些标准文件名.但是这是什么?休眠?CXF?其他?
是否有文档实际描述了database.xsd
依赖它的包中的角色?
更新:暂时删除database.xsd
并尝试重建,导致大量编译错误导致XML2SQL.java
使用*.hbm.xml
DTO文件引用的包的主要文件.这告诉我,罪魁祸首是...... 休眠!
我试图解析pacs.003 ISO20022格式的xml文件.我有这个XSD,并使用XMLBeans创建了所需的Java类.我遇到的问题是我无法从XML中读取元素并继续获取NullPointerException.我搜索过类似的问题,但大多数都导致OP转向不同的技术.
我从LON_20160208.xml获得的XML片段是:
<S2SDDDnf:FIToFICstmrDrctDbt xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.003.001.02">
<GrpHdr>
<MsgId>DDA160802AASW006543</MsgId>
</GrpHdr>
</S2SDDDnf:FIToFICstmrDrctDbt>
Run Code Online (Sandbox Code Playgroud)
我的代码是:
public static void main(String[] args) {
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setUseDefaultNamespace();
xmlOptions.setSavePrettyPrint();
Document doc;
try {
doc = Document.Factory.parse(new File("data_samples/LON_20160208.xml"));
String messageId = doc.getFIToFICstmrDrctDbt().getGrpHdr().getMsgId();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
将doc.getFIToFICstmrDrctDbt()
在上述结果NullPointerException异常,这似乎指向无论是get_store()
在XMLBeans类中的方法或与命名空间的问题.
我已经尝试使用替换命名空间映射并打开setUseDefaultNamespace()
和关闭该方法(它目前没有在上面注释掉).我也看过有关添加一个答案elementFormDefault="qualified"
的xsd:schema
元素,但这个已经完成.这些似乎都没有解决问题,我的想法已经不多了.
任何帮助将不胜感激.
如何将xml文件转换为简单的java bean?它是一个简单的xml文件,没有任何xsd,它是从java bean生成的,我无权访问它.
我尝试使用xmlbeans首先从xml生成xmd,然后从xsd生成类.我有一堆课.我正在寻找一个单独的java bean类.