Как я получаю полный XML или содержимое HTML использования элемента ElementTree?

apiVersion: v1
kind: ConfigMap
metadata:
  name: snipe-it-config
data:
  # Mysql Parameters
  MYSQL_PORT_3306_TCP_ADDR: "address"
  MYSQL_PORT_3306_TCP_PORT: "3306"
  MYSQL_DATABASE: "snipeit"
  MYSQL_USER: "user"
  MYSQL_PASSWORD: "pass"

  # Email Parameters
  # - the hostname/IP address of your mailserver
  MAIL_PORT_587_TCP_ADDR: "<smtp-host>"
  #the port for the mailserver (probably 587, could be another)
  MAIL_PORT_587_TCP_PORT: "587"
  # the default from address, and from name for emails
  MAIL_ENV_FROM_ADDR: "noreply@mydomain.com"
  MAIL_ENV_FROM_NAME: "Snipe-IT"
  # - pick 'tls' for SMTP-over-SSL, 'tcp' for unencrypted
  MAIL_ENV_ENCRYPTION: "tls"
  # SMTP username and password
  MAIL_ENV_USERNAME: "<smtp-username>"
  MAIL_ENV_PASSWORD: "<smtp-password>"

  # Snipe-IT Settings
  APP_ENV: "production"
  APP_DEBUG: "false"
  APP_KEY: "key"
  APP_URL: "http://127.0.0.1:80"
  APP_TIMEZONE: "Asia/Kolkata"
  APP_LOCALE: "en"
---
apiVersion: v1
kind: Service
metadata:
  name: snipeit
  labels:
    app: snipeit
spec:
  ports:
    - port: 80
  selector:
    app: snipeit
    tier: frontend
  type: LoadBalancer
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: snipeit
  labels:
    app: snipeit
spec:
  selector:
    matchLabels:
      app: snipeit
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: snipeit
        tier: frontend
    spec:
      containers:
      - image: snipe/snipe-it
        name: snipeit
        envFrom:
            - configMapRef:
                name: snipe-it-config
        ports:
        - containerPort: 80
          name: snipeit
        volumeMounts:
        - name: snipeit-persistent-storage
          mountPath: /var/lib/snipeit
      volumes:
      - name: snipeit-persistent-storage
        persistentVolumeClaim:
          claimName: snipeit-pv-claim

вместо использования configmap я добавлял переменные окружения и параметры в раздел развертывания ... так что просто добавил карту конфигурации и плавно все работает

10
задан Mark Amery 17 July 2016 в 20:50
поделиться

4 ответа

Это - решение, которое я закончил тем, что использовал:

def element_to_string(element):
    s = element.text or ""
    for sub_element in element:
        s += etree.tostring(sub_element)
    s += element.tail
    return s
6
ответ дан 3 December 2019 в 20:07
поделиться

ElementTree работает отлично, необходимо собрать ответ сами. Что-то вроде этого...

"".join( [ "" if t.text is None else t.text ] + [ xml.tostring(e) for e in t.getchildren() ] )

Благодаря AMD JV PEZ для указания на ошибки.


Править.

>>> import xml.etree.ElementTree as xml
>>> s= '<p>blah <b>bleh</b> blih</p>\n'
>>> t=xml.fromstring(s)
>>> "".join( [ t.text ] + [ xml.tostring(e) for e in t.getchildren() ] )
'blah <b>bleh</b> blih'
>>> 

Не нужный хвост.

11
ответ дан 3 December 2019 в 20:07
поделиться

Я сомневаюсь, что ElementTree является вещью использовать для этого. Но принятие Вас имеет веские причины использования его, возможно, Вы могли попытаться разделить корневой тег от фрагмента:

 re.sub(r'(^<%s\b.*?>|</%s\b.*?>$)' % (element.tag, element.tag), '', ElementTree.tostring(element))
2
ответ дан 3 December 2019 в 20:07
поделиться

Никакая идея, если внешняя библиотека могла бы быть опцией, но так или иначе - принимающий, нет той <p> с этим текстом на странице решение jQuery было бы:

alert($('p').html()); // returns blah <b>bleh</b> blih
-4
ответ дан 3 December 2019 в 20:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: