Как отформатировать атрибуты XML, не просто элементы

Напишите собственный драйвер слияния, как описано в стратегии для git и файлов с добавлением в основном файлов .

Таким образом, вы можете указать, что способ слияния файлов состоит в том, чтобы добавить их, а не останавливать и просить пользователя разрешить конфликт, который тривиально разрешается добавлением.

1
22.04.2014, 02:28
2 ответа

Вы можете использовать фантастическую библиотеку PyrowSoup Python. Этот образец кода извлекает файл XML из URL-адреса, указанного в качестве аргумента ввода к сценарию, анализирует его с помощью LXML, а затем довольно печатает.

#!/usr/bin/env python
import sys
import urllib2
import bs4

soup = bs4.BeautifulSoup(urllib2.urlopen(sys.argv[1]), ["lxml", "xml"])
print(soup.prettify())

Если у вас нет доступа к LXML, вы можете попробовать без [«LXML», «XML»] , хотя это будет разбирать HTML-файлы данных, а не XML и не является правильным способом Отказ

0
27.01.2020, 23:52

Я бы сильно призываю от Greep / Sed - они не работают для XML.

Но, к счастью, Perl и XML :: Twig имеют все виды магии для переформатирования и извлечения значений, как вы хотите. Get_xPath хорошо работает для извлечения значения, либо у вас есть Twig_handlers , чтобы обрабатывать элементы в зависимости от случая использования. (Или просто итерация с использованием детей или аналогичных).

Но в любом случае - отформатировать XML:

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

my $twig = XML::Twig->new(
    pretty_print  => 'nsgmls',
);
$twig->parse (\*DATA);
$twig->print;


__DATA__
<?xml version="1.0"?>
<root>
  <foo
    z="26"
    y="25"
    x="24"
    a="1"
    b="2"
    c="3"
    d="something more"/>
</root>

в NSGMLS Printing, это дает:

<?xml version="1.0"?>
<root
><foo
a="1"
b="2"
c="3"
d="something more"
x="24"
y="25"
z="26"
/></root>

indent_a дает вам:

<?xml version="1.0"?>
<root>
  <foo
      a="1"
      b="2"
      c="3"
      d="something more"
      x="24"
      y="25"
      z="26"
  />
</root>

, что, кажется, довольно близко к тому, что вы ищу?

1
27.01.2020, 23:52

Теги

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