2016-09-12 2 views
2

Я использовал этот пример, но ошибка произошла Get line number from xml node - javaПолучить стартовый номер строки из XML-узла - Java

Он отлично работает, но не работает на следующих случаях:

<activity 
    android:name=".Main2Activity" 
    android:label="@string/title_activity_main2" 
    android:theme="@style/AppTheme.NoActionBar" /> 

Таким образом, если узел написан на нескольких строках, он возвращает последнюю строку. В приведенном примере он вернется 4, но не 1. Есть ли у кого-нибудь идеи для его исправления? Благодаря

+0

Потому что это в строке 4, а не 1 - что вы имеете в виду, что текст 'android: theme =" @ style/AppTheme.NoActionBar "включен в узел, который начинается в строке 1, и который можно проверить, когда поиск нужного текста и выяснение, какая строка имеет наименьшее значение '<' перед этим текстом. – Smutje

ответ

0

Перед тем, как номер строки, превратить ваш XML USIN gthe следующий фрагмент кода:

Transformer tf = TransformerFactory.newInstance().newTransformer(); 
    tf.setOutputProperty(OutputKeys.INDENT, "yes"); 
    tf.setOutputProperty(OutputKeys.METHOD, "xml"); 
    tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); 


    StreamSource source = new StreamSource(new File("sourcefile.xml")); 
    StreamResult result = new StreamResult(new File("formattedfile.xml")); 

    tf.transform(source, result); 

Этот фрагмент кода будет формат XML, таким образом, что Вах узел появится на новой строке. Наконец, введите formattedfile.xml в качестве входных данных для логики номера линии.

Также будьте осторожны, чтобы у вас не было узлов в вашем xml, которые вам нужны, чтобы прийти как новая строка, так как это будет противоречить этой логике.

Смежные вопросы