【问题标题】:Get starting line number from xml node - java从 xml 节点获取起始行号 - java
【发布时间】:2016-09-12 11:09:44
【问题描述】:

我正在使用该示例,但出现了错误 Get line number from xml node - java

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

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

所以如果一个节点写在几行上,它会返回最后一行。对于提供的示例,它将返回 4,但不会返回 1。有没有人有任何修复它的想法?谢谢

【问题讨论】:

  • 因为它在第 4 行而不是第 1 行 - 你的意思是文本 android:theme="@style/AppTheme.NoActionBar" 包含在从第 1 行开始的节点中,并且可以在搜索所需的文本时检查它和找出在该文本之前哪一行的&lt; 最少。

标签: java xml element


【解决方案1】:

在获取行号之前,使用以下 sn-p 转换您的 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);

这个 sn-p 将格式化 xml,使得 wach 节点将出现在新行上。 最后提供formattedfile.xml 作为获取行号逻辑的输入。

还要注意,您的 xml 中没有一些节点需要您作为新行来作为新行,因为这将违反此逻辑。

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多