从xml节点获取起始行号 - java

时间:2016-09-12 11:09:44

标签: java xml element

我正在使用那个例子,但是发生了一个错误 Get line number from xml node - java

效果很好,但在以下情况下失败:

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

因此,如果一个节点写在几行上,它将返回最后一行。对于提供的示例,它将返回4,但不是1.是否有人有任何想法来修复它?感谢

1 个答案:

答案 0 :(得分:0)

在获取行号之前,请使用以下代码段转换您的xml:

    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,使wach节点出现在新行上。 最后提供formattedfile.xml作为获取行号逻辑的输入。

另外要小心,你的xml中没有一些节点,你需要这些节点作为新行,因为这将违反这个逻辑。