我正在使用perl轉換XML文件JSON。我能夠編寫用於將輸入XML文件轉換爲Json格式的代碼。使用Perl將XML轉換爲JSON
下面是示例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轉換,它檢查XML中的元素「FileName」是否爲空。如果它沒有提取它的價值。
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元素?例如,一個''可以有多個''? –
2015-02-10 23:06:51
不要使用XML :: Simple。事實並非如此。它適用於簡單的XML。嘗試像XML :: Twig這樣的東西。 – Sobrique 2015-02-10 23:09:58
Re。 *「我正在嘗試僅使用構建在庫中的perl而不是任何新的第三方庫,這是我使用XML :: Simple的原因。」* XML :: Simple'不是核心模塊...還有什麼其他非內核你的公司認爲模塊可以接受嗎? – ThisSuitIsBlackNot 2015-02-10 23:09:59