Как я могу использовать код с Android SDK для разбора XML

Я хочу проанализировать XML-файл с перечисляемыми значениями, которые содержат числа. KxmlParser от android, похоже, имеет проблемы с этим. Я заглянул внутрь кода, и он принимает только буквы и некоторые другие токены, но не цифры.

Поэтому я скопировал реализацию KxmlParser и изменил эту часть, все работало нормально. Но для разрешения ссылок я добавил в проект libcore-jar. Теперь я получаю ошибки компиляции, потому что я не должен использовать эту библиотеку исключение для создания ядра библиотеки.

Итак, вот мой вопрос: как лучше всего изменить специфичный для Android код для моего приложения и разрешить ссылки на libcore?

1 ответ

Это не идеально, но если вам нужно сделать что-то сумасшедшее, как я (я тоже), и вы используете maven, вы можете сделать что-то вроде этого, чтобы заштриховать пакеты:

<plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>jarjar-maven-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>process-classes</phase>
            <goals>
                <goal>jarjar</goal>
            </goals>
            <configuration>
                <overwrite>true</overwrite>
                <includes>
                    <include>com.fasterxml:aalto-xml</include>
                    <include>commons-codec:commons-codec</include>
                    <include>javax.xml.stream:stax-api</include>
                    <include>org.codehaus.woodstox:stax2-api</include>
                    <include>com.cookies:app</include>
                </includes>
                <rules>
                    <!-- We want to used STAX but Android doesn't generally like us including javax packages -->
                    <rule>
                        <pattern>javax.xml.stream.**</pattern>
                        <result>com.cookies.internal.javax.xml.stream.@1</result>
                    </rule>
                    <!-- Android packages commons-codec < 1.4 and we want to make use of the Base64OutputStream to *decode* -->
                    <rule>
                        <pattern>org.apache.commons.codec.**</pattern>
                        <result>com.cookies.internal.org.apache.commons.codec.@1</result>
                    </rule>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>
Другие вопросы по тегам