我的目标是获取XML字符串并使用XMLBeans XmlObject解析它并添加一些子节点.
这是一个示例文档(xmlString),
<?xml version="1.0"?>
<rootNode>
<person>
<emailAddress>joefoo@example.com</emailAddress>
</person>
</rootNode>
Run Code Online (Sandbox Code Playgroud)
这是添加一些节点后我想要XML文档的方式,
<?xml version="1.0"?>
<rootNode>
<person>
<emailAddress>joefoo@example.com</emailAddress>
<phoneNumbers>
<home>555-555-5555</home>
<work>555-555-5555</work>
<phoneNumbers>
</person>
</rootNode>
Run Code Online (Sandbox Code Playgroud)
基本上,只需添加<phoneNumbers/>两个子节点的节点<home/>和<work/>.
就我而言,
XmlObject xml = XmlObject.Factory.parse(xmlString);
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试实现构建器模式以生成Apache XmlBeans对象.
我为我的所有类生成了构建器,它继承自:
public abstract class Builder<T extends XmlObject> {
protected T xmlObject;
@SuppressWarnings("unchecked")
public T build() {
return (T) xmlObject.copy();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了几个这样的构建器(Time2Save继承自XmlObject):
public class Time2SaveBuilder extends Builder<Time2Save> {
public Time2SaveBuilder(int amount, String unit) {
xmlObject = Time2Save.Factory.newInstance();
xmlObject.setUnit(unit);
xmlObject.setValue(amount);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好.但我遇到的问题是我不喜欢在每个构建器中实例化xmlObject的重复,如果可能的话,我宁愿在抽象的Builder类中进行.所以我尝试将此构造函数添加到Builder类:
@SuppressWarnings("unchecked")
public Builder() {
xmlObject = (T) T.Factory.newInstance();
}
Run Code Online (Sandbox Code Playgroud)
并留下这样的实现:
public class Time2SaveBuilder extends Builder<Time2Save> {
public Time2SaveBuilder(int amount, String unit) {
xmlObject.setUnit(unit);
xmlObject.setValue(amount);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我收到以下错误:
Exception in thread "main" java.lang.ClassCastException:
org.apache.xmlbeans.impl.values.XmlAnyTypeImpl cannot be cast …Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序来将数据导出到Excel工作表.
我不会使用XSSFWorkbook类,因为我的Excel超过了HSSFWorkbook类的255列限制.
我下载了Apache POI库,并将以下库包含在我的proyect中: - poi-3.9.jar - poi-excelant-3.9.jar - poi-ooxml-3.9.jar - poi-ooxml-schemas-3.9.jar - poi -scratchpad-3.9.jar - dom4j-1.6.1.jar - stax-api-1.0.1.jar - xmlbeans-2.3.0.jar
当我导出数据以获取Excel工作表时,我得到此运行时错误:
java.lang.ExceptionInInitializerError
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
Truncated. see log file for complete stacktrace
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.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.loadTypeSystem(Unknown Source)
at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.<clinit>(Unknown Source)
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
Truncated. see log file for complete stacktrace
Caused By: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native …Run Code Online (Sandbox Code Playgroud) 有些API会返回指向XML Document根目录的XmlCursor.我需要将所有这些插入到另一个org.w3c.DOM表示的文档中.
在开始:XmlCursor poiting
<a> <b> some text </b> </a>
<foo>
</foo>
DOM文档:
<foo>
<someOtherInsertedElement>
<a> <b> some text </b> </a>
</someOtherInsertedElement>
</foo>
document.importNode(cursor.getDomNode())
最后我希望将原始DOM文档更改为:
<a> <b> some text </b> </a>
<foo>
</foo>
注意:
<foo>
<someOtherInsertedElement>
<a> <b> some text </b> </a>
</someOtherInsertedElement>
</foo> 不起作用 - 抛出异常:NOT_SUPPORTED_ERR:实现不支持所请求的对象或操作类型.
我有一个像这样的XML结构:
<root>
<a/>
<b/>
<b/>
<a/>
<a/>
</root>
Run Code Online (Sandbox Code Playgroud)
我的XSD看起来像这样:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="a"/>
<xs:element ref="b"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="a" type="xs:string" />
<xs:element name="b" type="xs:string" />
Run Code Online (Sandbox Code Playgroud)
即我有两个不同子标签的随机序列.
使用XMLBeans我得到一个带有访问方法的Root对象:getAArray(),getBArray()
这是我的问题:
标签按名称分组,原始顺序(a,b,b,a,a)丢失.
但我需要知道这些元素的顺序.
使用XMLBeans,最好/最简单的方法是什么?
我正在使用XMLBeans绑定开发基于Axis2的WebServices.我已经使用WSDL2Java生成器生成了代码,并尝试使用请求中设置的样本值对其进行测试.
在其中一个setter方法(自动生成的代码)中,我找到了下面的代码.该方法get_store()返回一个空值,因此我得到一个NullPointerException.
target = (org.apache.xmlbeans.SimpleValue)
get_store().find_element_user(TRANSACTIONTYPE$0, 0);
Run Code Online (Sandbox Code Playgroud)
我尝试谷歌找到解决方案,发现类似的问题没有指定解决方案.
这个问题有什么解决方法吗?请帮助我
我正在尝试编写一个在Excel中编写数据的程序.但我一直收到错误,如下所示:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setSaveAggressiveNamespaces()Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:56)
at wriExcel.main(wriExcel.java:19)
Run Code Online (Sandbox Code Playgroud)
在找到解决方案时,我只能发现我应该使用XMLBeans 2.0或更高.但是,我正在使用xmlbeans 2.3.0.这个错误还有其他原因吗?
我目前正在开发具有XMLBeans绑定而不是默认JAXB绑定的Apache CXF Web服务。我正在使用Java 1.6编译和运行代码。对于以下代码段,在运行时出现“ DOM Level 3 Not Implemented”错误:
ExtType[] extTypeList = p.getExtArray();
for (ExtType extType : extTypeList) {
Node node = extType.getDomNode();
NodeList objList = node.getChildNodes();
for (int i = 0; i < objList.getLength(); ++i) {
Node text = (Node) objList.item(i);
if (text.getNodeName() != null
&& text.getNodeName() == XmlConstant.NODE_NAME) {
info.setDuration(text
.getTextContent());
}
}
}
Run Code Online (Sandbox Code Playgroud)
在JBoss中显示的确切错误如下:
java.lang.RuntimeException: DOM Level 3 Not implemented
at org.apache.xmlbeans.impl.store.DomImpl._node_getTextContent(DomImpl.java:2516)
at org.apache.xmlbeans.impl.store.Xobj$NodeXobj.getTextContent(Xobj.java:2607)
Run Code Online (Sandbox Code Playgroud)
从以上错误消息中可以明显看出,由于在运行时未找到DOM 3级API,因此getTextContent方法引起了异常。如何消除此错误?我猜我将不得不弄清楚哪个jar包含DOM API,并从该jar中删除所有与dom相关的类,以便代替使用与jdk一起提供的默认DOM API。或者,是否有一种方法可以使用DOM而不依靠getTextContent方法来获取xml标记的文本内容?
我有一个XmlObject(org.apache.xmlbeans.XmlObject)obj.
XmlObject obj;
...
obj.toString(); //<xml-fragment>n2</xml-fragement>
// content ="n2"
String content = obj.toString().substring(14, obj.length() - 15)
Run Code Online (Sandbox Code Playgroud)
在内容中存储"n2"的正确方法是什么?
我有一个类
public class CreditCardDocumentImpl extends org.apache.xmlbeans.impl.values.XmlComplexContentImpl implements creditcard.CreditCardDocument
{
public CreditCardDocumentImpl(org.apache.xmlbeans.SchemaType sType)
{
super(sType);
}
}
Run Code Online (Sandbox Code Playgroud)
该类正在实现“CreditCardDocument”接口。
界面就像
public interface CreditCardDocument extends org.apache.xmlbeans.XmlObject
{
Run Code Online (Sandbox Code Playgroud)
现在,如果我想访问该构造函数
CreditCardDocument creditCardDocument = new CreditCardDocumentImpl(CreditCardDocumentImpl.class.instanceType());
Run Code Online (Sandbox Code Playgroud)
它抛出错误,
groovy.lang.MissingMethodException: No signature of method: static creditcard.impl.CreditCardDocumentImpl.instanceType() is applicable for argument types: () values: []
Run Code Online (Sandbox Code Playgroud)
我不明白是什么错误。我需要传递给构造函数的参数是什么?
我目前正在与Apachi合作,因为我需要从XLSX文件读取数据,以后将其转换为CSV。这是我用来创建XSSFWorkbook的代码,它每次都会导致异常。据我所知,XMLBeans是其中的一部分。它已被弃用,但是在这种情况下,它是POI的依赖项。
public static void appendCSV(File inputFile, String outputFile, String tag)
{
System.out.println(inputFile.getAbsolutePath());
InputStream inp = null;
try {
inp = new FileInputStream(inputFile);
XSSFWorkbook wb = new XSSFWorkbook(inp);
Run Code Online (Sandbox Code Playgroud)
我的异常被抛出在上面代码块的最后一行。
Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:65)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:601)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:174)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:279)
at BigBangarang.appendCSV(BigBangarang.java:68)
at BigBangarang.main(BigBangarang.java:268)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62)
... 5 more
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:50)
at org.apache.poi.xssf.model.SharedStringsTable.readFrom(SharedStringsTable.java:127)
at org.apache.poi.xssf.model.SharedStringsTable.<init>(SharedStringsTable.java:108)
... 11 more
Run Code Online (Sandbox Code Playgroud)
有人遇到过这种情况吗?我拥有最新的XMLBeans版本,几乎感觉到我可能需要找到一个旧版本,因为它说缺少一种方法。我不确定是否有替代/便捷的方法来读取XLSX,或者在处理任何数据之前将其简单地转换为CSV。
我正在使用带有 JDK 12.0.1 和org.beryx.jlink插件 (2.10.4) 的Gradle(4.10.3,但我已经尝试了 5.4.1 之前的大多数版本),但是每次我尝试创建jlink图片:
-> 任务:createMergedModule
无法从服务加载器调用中派生使用子句:com/fasterxml/jackson/databind/ObjectMapper$2.run()。
无法从服务加载器调用中派生使用子句:com/fasterxml/jackson/databind/ObjectMapper.secureGetServiceLoader()。
无法从以下位置的服务加载器调用派生使用子句:org/apache/commons/compress/utils/ServiceLoaderIterator.()。
C:\Users\MyName\IdeaProjects\myapp\build\jlinkbase\tmpjars\myapp.merged.module\module-info.java:393: 错误:服务实现没有默认构造函数:XBeansXPath 提供 org.apache.xmlbeans .impl.store.PathDelegate.SelectPathInterface 与 org.apache.xmlbeans.impl.xpath.saxon.XBeansXPath;
C:\Users\MyName\IdeaProjects\myapp\build\jlinkbase\tmpjars\myapp.merged.module\module-info.java:394: 错误:服务实现没有默认构造函数:XBeansXQuery 提供 org.apache.xmlbeans .impl.store.QueryDelegate.QueryInterface 与 org.apache.xmlbeans.impl.xquery.saxon.XBeansXQuery;2 错误
-> 任务:createMergedModule 失败
当我点击在合并中抛出错误的行时module-info.java,它指向这两个:
provides org.apache.xmlbeans.impl.store.PathDelegate.SelectPathInterface with org.apache.xmlbeans.impl.xpath.saxon.XBeansXPath;
provides org.apache.xmlbeans.impl.store.QueryDelegate.QueryInterface with org.apache.xmlbeans.impl.xquery.saxon.XBeansXQuery;
Run Code Online (Sandbox Code Playgroud)
我的build.gradle文件看起来像这样:
plugins {
id 'application'
id 'idea'
id 'java'
id 'org.openjfx.javafxplugin' version '0.0.7'
id 'org.beryx.jlink' version '2.10.4'
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-csv:1.6'
compile 'org.apache.poi:poi-ooxml:4.1.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.9.9'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.9'
compile 'com.fasterxml.jackson.core:jackson-databind:2.9.9' …Run Code Online (Sandbox Code Playgroud)