Я использую perl для преобразования XML-файла JSON. Мне удалось написать код для преобразования входного XML-файла в формат Json.Преобразование XML в JSON с использованием perl
Вот пример XML:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Person SchemaVersion="1.0.8">
<ID>0</ID>
<Home ID="ABC-XYZ" State="Unknown">
<Location>
<SiteName></SiteName>
<Number>62</Number>
<MaxSize>0</MaxSize>
<Comment></Comment>
</Location>
<Laptop>
<FileName>/usr/temp/RPM_020515_.tar.gz</FileName>
</Laptop>
</Home>
</Person>
пример кода Perl делает преобразование JSON:
#!/usr/bin/perl
use JSON;
use XML::Simple;
# Create the object of XML Simple
my $xmlSimple = new XML::Simple(KeepRoot => 1);
# Load the xml file in object
my $dataXML = $xmlSimple->XMLin("input/path/to/above/XMLFILE");
# use encode json function to convert xml object in json.
my $jsonString = encode_json($dataXML);
# finally print json
print $jsonString;
Выходное значение JSON:
{
"Person": {
"ID": "0",
"SchemaVersion": "1.0.8",
"Home": {
"ID": "ABC-XYZ",
"Laptop": {
"FileName": "/usr/temp/RPM_020515_.tar.gz"
},
"Location": {
"Number": "62",
"MaxSize": "0",
"Comment": { },
"SiteName": { }
},
"State": "Unknown"
}
}
}
Приведенный выше код работает отлично.
Мой вопрос в том, что я фактически застрял.
Мне нужно сделать еще одну вещь вместе с конверсией JSON, которая проверяет, является ли элемент «FileName» в XML пустым или нет. если он не извлекает ее значение.
So output will be two things:
1. XML To JSON convert (working fine)
2. Along with point 1. extract the value of nested element in XML
"FileName". I need that for some business logic need in next step.
Может ли кто-нибудь из экспертов по perl помочь мне здесь и предложить мне, как я могу это сделать в своем текущем Perl-коде.
Спасибо за помощь заранее. Это мой первый скрипт perl, поэтому, пожалуйста, извините меня, если это слишком тривиальный вопрос.
Пробовал читать документы perl, но не так полезен.
ПРИМЕЧАНИЕ. Я пытаюсь использовать только встроенные библиотеки perl, а не какие-либо новые сторонние библиотеки, поэтому я использовал XML :: Simple. Ограничение его производственного кода (очень плохая оценка). Я надеюсь, что что-то для этого существует в XML :: Simple или JSON.
Возможно, вам понравится [эта статья] (http://www.perlmonks.org/index.pl ? node_id = 218480) при использовании XML :: Simple. Одна вещь, которая беспокоит меня о вашем коде, есть ли какие-либо элементы XML, которые можно было бы повторить? Например, может ли '' содержать более одного ''? –
Не используйте XML :: Simple. Это не так. Это простой XML. Вместо этого попробуйте что-то вроде XML :: Twig. – Sobrique
Re. * «Я пытаюсь использовать только встроенные библиотеки perl, а не какие-либо новые сторонние библиотеки, поэтому я использовал XML :: Simple.» * «XML :: Simple» не является основным модулем ... что еще неядерное модули ли ваша компания считает приемлемой? – ThisSuitIsBlackNot