我试图将一组XML文件读入Apache Beam管道。一些元素具有名称空间,并且名称空间声明是在根节点上声明的。我已经使用标准的JAXB解析器编写了在Apache Beam之外解析此代码的代码。但是,当我对Beam使用XmlIO.read()函数时,会出现异常:com.ctc.wstx.exc.WstxParsingException:未声明的名称空间前缀“ zzz”。
xml的结构如下:
<root xmlns:zzz="...">
<record/>
<record/>
...
</root>
我花了几天时间寻找解决方案,却一无所获。
我的代码就像我看到的大多数示例一样设置:
pipeline.apply(XmlIO.<Record>read()
.withRootElement("Root")
.withRecordElement("Record")
.withRecordClass(Record.class)
.from(Paths.get(".","Data", "file.xml").toString()))
我还设置了package-info.java批注
@XmlSchema (elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
namespace = "http://www.zzz.org",
xmlns = {
@XmlNs(prefix="zzz", namespaceURI="http://www.zzz.com/xml/zzz")
}
)
package com.jaxb;
您能提供的任何帮助将不胜感激。