【问题标题】:(Node.js/Java) How to make XML output Pretty(Node.js/Java) 如何使 XML 输出漂亮
【发布时间】:2018-11-27 20:49:12
【问题描述】:

我一直试图在 XML 中制作漂亮的输出,但无法做到,所以我想在 node.js 和 java(android) 中这样做。

我的 XML 输入是:

  <custom.TextView 
  android:id="@+id/textView2" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="TextView" tools:layout_editor_absoluteX="164dp" /> 

解析这段代码后,输出为

<custom.TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"  android:text="TextView" tools:layout_editor_absoluteX="164dp" /> 

我的预期输出是

 <custom.TextView 
  android:id="@+id/textView2" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="TextView" tools:layout_editor_absoluteX="164dp" /> 

我该怎么做,请帮助我!

【问题讨论】:

  • 这有点不清楚。你如何产生这个输出?你自己打印吗?它在编辑器中并且您想要格式化它吗?
  • 很少有 XML 序列化程序以您显示的方式垂直堆叠属性。一个在撒克逊做的,虽然(a)它并没有完全按照你想要的方式做,并且(b)它在你选择的平台上不可用。我认为如果你真的想要这种布局,你可能需要自己编写代码。
  • 好吧,我已经尝试了 2 周,基本上我正在使用 node.js 中的 xmldom 解析 xml,解析完成但所有标签的格式都发生了变化,我怎样才能保留格式,这是我的问题

标签: java node.js xml xml-parsing pretty-print


【解决方案1】:

虽然在这种情况下使用的方法不是很好,但是您可以尝试此代码以获得漂亮的输出,在下面的代码中您可以提供您的 xml,然后它会根据您的需要美化它。

    var arrayEml= xml = '';

    for (var i = 0; i < xml.length; i++) {
        if ((xml[i].match(/[a-zA-Z]/)) && (xml[i + 1] == ' ') && (xml[i + 2].match(/[a-zA-Z]/))) {
            arrayEml += (xml[i] + '\n');
        } else {
            arrayEml += xml[i];
        }
        // }
    }
    var againParsing = ' ';
    for (var i = 0; i < arrayEml.length; i++) {

        if ((xml[i] = '"') && (xml[i + 1] == ' ') && (xml[i + 2].match(/[a-zA-Z]/))) {
            againParsing += (xml[i] + '\n' + "\t   ");
        } else {
            againParsing += xml[i];
        }
    }

【讨论】:

  • 非常感谢,它完全解决了我的问题,非常感谢:)
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多