2015-11-11 2 views
0

Я хотел бы перебрать все дочерние элементы в XML.Как динамически перебирать XML-элемент в Augeas

Можно ли итератировать динамически? Другими словами, я хотел бы проверить/отредактировать все вложенные элементы, не зная последнего номера элемента.

Для например:

В следующих "сервер-групп" элемент содержит три сервера группы дочерний элемент. Я хотел бы перебрать все элементы группы серверов, не зная подсчетов. Сейчас три. Чтобы я мог получить доступ к последнему элементу. Если я не знаю номер последнего элемента, можно ли повторить итерацию?

<server-groups> 
    <server-group name="ServiceGroupOne" profile="full-ha"> 
     <system-properties> 
      <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/> 
      <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/> 
      <property name="modcluster.lbgroup" value="SearchGroupOne" boot-time="true"/> 
     </system-properties> 
    </server-group> 
    <server-group name="ServiceGroupTwo" profile="full-ha"> 
     <system-properties> 
      <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/> 
      <property name="modcluster.lbgroup" value="SearchGroupTwo" boot-time="true"/> 
      <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/> 
     </system-properties> 
    </server-group> 
    <server-group name="ServiceGroupThree" profile="full-ha"> 
     <system-properties> 
      <property name="modcluster.lbgroup" value="CommonSearchGroup" boot-time="true"/> 
      <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/> 
      <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/> 
     </system-properties> 
    </server-group> 
</server-groups> 

ответ

1

В Авгиях, итерация может быть сделана с помощью setm:

COMMAND 
    setm - set the value of multiple nodes 

    SYNOPSIS 
    setm <BASE> <SUB> [<VALUE>] 

    DESCRIPTION 
    Set multiple nodes in one operation. Find or create a node matching SUB 
    by interpreting SUB as a path expression relative to each node matching 
    BASE. If SUB is '.', the nodes matching BASE will be modified. 

    OPTIONS 
    <BASE> the base node 
    <SUB>  the subtree relative to the base 
    <VALUE> the value for the nodes 
+0

@Raphink: Wow. Это здорово. Но иметь еще одну проблему в этом инструменте. Если вы посмотрите на мой пример, ключ «modcluster.proxylist» находится в разных положениях. Можно ли изменить значение свойства на один короткий? Если возможно, не могли бы вы мне объяснить? – ArunRaj

+1

Поскольку вы открыли [новый вопрос] (http://stackoverflow.com/questions/33664488/how-to-use-setm-in-puppet/33666228#33666228), я ответил на это там; -) –