SED删除空格和换行符

我有以下xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:enabled="false" android:orientation="horizontal" android:id="@id/action_container"
          android:background="@null" android:paddingLeft="4.0dip" android:layout_width="0.0dip"
          android:layout_height="48.0dip" android:layout_weight="1.0"
          style="@style/Widget.Compat.NotificationActionContainer"
          xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:enabled="false" android:layout_gravity="start|center" android:id="@id/action_image"
           android:layout_width="@dimen/notification_action_icon_size"
           android:layout_height="@dimen/notification_action_icon_size" android:scaleType="centerInside"
           android:alpha="0.5"/>
<TextView android:enabled="false" android:textColor="#ffcccccc" 
          android:ellipsize="end"
          android:layout_gravity="start|center" 
          android:id="@id/action_text" android:paddingLeft="4.0dip"
          android:clickable="false" android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
          android:singleLine="true" android:alpha="0.5" 
          style="@style/Widget.Compat.NotificationActionText"/>
</LinearLayout>

我正在尝试删除多余的空格和换行符。

这是我需要的结果:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:enabled="false" android:orientation="horizontal" android:id="@id/action_container" android:background="@null" android:paddingLeft="4.0dip" android:layout_width="0.0dip" android:layout_height="48.0dip" android:layout_weight="1.0" style="@style/Widget.Compat.NotificationActionContainer" xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:enabled="false" android:layout_gravity="start|center" android:id="@id/action_image" android:layout_width="@dimen/notification_action_icon_size" android:layout_height="@dimen/notification_action_icon_size" android:scaleType="centerInside" android:alpha="0.5"/>
<TextView android:enabled="false" android:textColor="#ffcccccc" android:ellipsize="end" android:layout_gravity="start|center" android:id="@id/action_text" android:paddingLeft="4.0dip" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:alpha="0.5" style="@style/Widget.Compat.NotificationActionText"/>
</LinearLayout>

我尝试使用此命令

sed -i '' 's/^[ \t]*//;s/[ \t]*$//' file.xml

它删除了一些空格,但没有删除换行符。

最终,我希望能够通过仅知道其id(@ id / action_image)将ImageView的宽度(android:layout_width)更改为5dip。

我希望能够通过其ID获取xml元素并更改其其他参数的值

库萨兰达

使用xmlstarlet及其fo命令:

$ xmlstarlet fo file.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:enabled="false" android:orientation="horizontal" android:id="@id/action_container" android:background="@null" android:paddingLeft="4.0dip" android:layout_width="0.0dip" android:layout_height="48.0dip" android:layout_weight="1.0" style="@style/Widget.Compat.NotificationActionContainer">
  <ImageView android:enabled="false" android:layout_gravity="start|center" android:id="@id/action_image" android:layout_width="@dimen/notification_action_icon_size" android:layout_height="@dimen/notification_action_icon_size" android:scaleType="centerInside" android:alpha="0.5"/>
  <TextView android:enabled="false" android:textColor="#ffcccccc" android:ellipsize="end" android:layout_gravity="start|center" android:id="@id/action_text" android:paddingLeft="4.0dip" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:alpha="0.5" style="@style/Widget.Compat.NotificationActionText"/>
</LinearLayout>

用于xmlstarlet fo -n完全省略缩进。


要修改android:layout_width属性为的ImageView节点的android:id属性@id/action_image,您绝对不需要重新格式化XML文档:

$ xmlstarlet ed -u '//ImageView[@android:id="@id/action_image"]/@android:layout_width' -v "5dip" file.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:enabled="false" android:orientation="horizontal" android:id="@id/action_container" android:background="@null" android:paddingLeft="4.0dip" android:layout_width="0.0dip" android:layout_height="48.0dip" android:layout_weight="1.0" style="@style/Widget.Compat.NotificationActionContainer">
  <ImageView android:enabled="false" android:layout_gravity="start|center" android:id="@id/action_image" android:layout_width="5dip" android:layout_height="@dimen/notification_action_icon_size" android:scaleType="centerInside" android:alpha="0.5"/>
  <TextView android:enabled="false" android:textColor="#ffcccccc" android:ellipsize="end" android:layout_gravity="start|center" android:id="@id/action_text" android:paddingLeft="4.0dip" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:alpha="0.5" style="@style/Widget.Compat.NotificationActionText"/>
</LinearLayout>

在这里,我们xmlstarlet用来编辑所要节点的正确属性。使用XPath表达式选择属性

//ImageView[@android:id="@id/action_image"]/@android:layout_width

//ImageView在XPath表达式将查找ImageView节点的任何地方文档中。要将其限制为仅顶级节点的子LinearLayout节点,请/LinearLayout/ImageView改用。

-v "5dip"命令中给出该属性的新值。

严格来说,问题是

我希望能够通过其ID获得xml元素[...]

即,不知道节点的名称。为此,只需ImageView将XPath表达式更改*这样,您将更新与给定字符串匹配的所有节点android:id

有关的:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

换行符和删除空格的问题

来自分类Dev

如何从列表中删除换行符和尾随空格

来自分类Dev

删除空格和换行符-BeautifulSoup Python

来自分类Dev

如何删除不需要的空格和换行符

来自分类Dev

匹配sed中的空格或换行符

来自分类Dev

从数组中删除换行符/空格

来自分类Dev

textview 在换行符后删除空格

来自分类Dev

MySQL:修剪*空格和换行符

来自分类Dev

sed无法删除换行符

来自分类Dev

Bash - 在用空格替换换行符之前删除破折号和换行符

来自分类Dev

带有空格和换行符的MacOSX中的sed变体

来自分类Dev

带有空格和换行符的MacOSX中的sed变体

来自分类Dev

sed:a [6位数]和空格后的换行符

来自分类Dev

如何使用ORACLE REGEX函数删除所有前导和尾随的换行符和空格?

来自分类Dev

sed与换行符

来自分类Dev

使用python Xpath删除换行符和空格解析XML

来自分类Dev

使用Php Dom Document从捕获的数据中删除空格和换行符

来自分类Dev

如何删除字符串中的空格和换行符

来自分类Dev

使用惯用的Python删除熊猫列中的空格和换行符?

来自分类Dev

在文件中写入时如何删除空格和换行符?

来自分类Dev

Java字符串:在换行符之前和之后删除所有其他空格

来自分类Dev

如何从字符串中删除不需要的字符,如空格和换行符

来自分类Dev

如何从字符串的特定部分删除空格和换行符?

来自分类Dev

如何在运行中删除jQuery脚本中的空格和换行符?

来自分类Dev

使用python删除txt文件中的空格和换行符

来自分类Dev

Vim regex删除冒号和空格或换行符之间的所有内容

来自分类Dev

在 Notepad++ 中删除重复和干净的换行符/空格

来自分类Dev

如何删除awk中的空格和换行符以插入字符串?

来自分类Dev

从字符串 javascript 中删除额外的空格、换行符和 $nbsp

Related 相关文章

  1. 1

    换行符和删除空格的问题

  2. 2

    如何从列表中删除换行符和尾随空格

  3. 3

    删除空格和换行符-BeautifulSoup Python

  4. 4

    如何删除不需要的空格和换行符

  5. 5

    匹配sed中的空格或换行符

  6. 6

    从数组中删除换行符/空格

  7. 7

    textview 在换行符后删除空格

  8. 8

    MySQL:修剪*空格和换行符

  9. 9

    sed无法删除换行符

  10. 10

    Bash - 在用空格替换换行符之前删除破折号和换行符

  11. 11

    带有空格和换行符的MacOSX中的sed变体

  12. 12

    带有空格和换行符的MacOSX中的sed变体

  13. 13

    sed:a [6位数]和空格后的换行符

  14. 14

    如何使用ORACLE REGEX函数删除所有前导和尾随的换行符和空格?

  15. 15

    sed与换行符

  16. 16

    使用python Xpath删除换行符和空格解析XML

  17. 17

    使用Php Dom Document从捕获的数据中删除空格和换行符

  18. 18

    如何删除字符串中的空格和换行符

  19. 19

    使用惯用的Python删除熊猫列中的空格和换行符?

  20. 20

    在文件中写入时如何删除空格和换行符?

  21. 21

    Java字符串:在换行符之前和之后删除所有其他空格

  22. 22

    如何从字符串中删除不需要的字符,如空格和换行符

  23. 23

    如何从字符串的特定部分删除空格和换行符?

  24. 24

    如何在运行中删除jQuery脚本中的空格和换行符?

  25. 25

    使用python删除txt文件中的空格和换行符

  26. 26

    Vim regex删除冒号和空格或换行符之间的所有内容

  27. 27

    在 Notepad++ 中删除重复和干净的换行符/空格

  28. 28

    如何删除awk中的空格和换行符以插入字符串?

  29. 29

    从字符串 javascript 中删除额外的空格、换行符和 $nbsp

热门标签

归档