2014-02-05 5 views
0

Я проверяю много файлов XML против данного XSD. Он печатает некоторые ошибки в командной строке. Мне нужны эти ошибки в одну переменную.Проверка xml на XSD В xmlstarlet

Я использую Perl. Я пробовал что-то ниже, но не смог получить мое требование.

$values = system("xmlstarlet val --err --xsd Test.xsd Test1.xml"); 

возвращение в 0 или 1

$values = `xmlstarlet val --err --xsd Test.xsd Test1.xml` 

ошибки выглядит следующим образом

test.xml: 5340.23: Element 'SP': Этот элемент не ожидается.

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

Я использовал следующую команду

**xmlstarlet val --err --xsd Test.xsd Test1.xml** 

Позвольте мне знать, какие-то идеи, чтобы получить ошибки.

+1

http://stackoverflow.com/questions/109124/how-do-you-capture-stderr-stdout-and-the-exit-code-all-at-once-in-perl –

+0

Благодаря Denim он тоже работает ... –

+0

@UmeshPerl ... Но я ничего не предложил. –

ответ

1

Пробуйте этот код;

my $error; 
my $values = `xmlstarlet val --err --xsd Test.xsd Test1.xml 2>&1`; 

if ($?) { 
    $error = $values; 
} 
+0

Спасибо, Glebaty это работает ..... –

Смежные вопросы