Я пытаюсь прочитать набор файлов XML в конвейер Apache Beam. Некоторые элементы имеют пространства имен, и объявление пространства имен объявляется в корневом узле. Я написал код для анализа этого вне Apache Beam, просто используя стандартный анализатор JAXB. Однако, когда я использую функцию 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;
Буду признателен за любую помощь, которую вы можете оказать.