Чтение XML с объявлениями пространства имен с использованием Apache Beam XmlIO - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь прочитать набор файлов 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;

Буду признателен за любую помощь, которую вы можете оказать.

...