2012-08-15 12 views
14

मैं एक XML फ़ाइल जिसका प्रारूप काफी संकुचित है और सभी टैग की तरहएक्सएमएल स्वरूपण इंडेंटेशन टैग मिलान - लिनक्स

<PersonalData><IndividualDetails><Title>Mr</Title><Gender>Male</Gender><FirstName>Hae</FirstName><Surname>JONES</Surname><Occupation>Banker</Occupation><DateofBirth>4/6/76</DateofBirth><LastKnownAddress></LastKnownAddress><LastKnownPostCode>00145</LastKnownPostCode><OtherNames></OtherNames></IndividualDetails><OccupationDetails><Company>SD Bank</Company><CompanyAddress>Sunset Boulevard NY</CompanyAddress><ContactNo>335698457</ContactNo></OccupationDetails></PersonalData> 

एक साथ छड़ी कर रहे हैं वहाँ खोल में किसी भी आदेश है कि ठीक से टैग फ़ॉर्मेट कर सकते हैं है है। अगर इंडेंटेशन केवल टैग्स को अपनी लाइनों में जोड़ना नहीं है तो मेरी समस्या भी हल हो सकती है।

उत्तर

31
xmllint --format <your-xml-file> 

उदाहरण

$ cat test.xml 
<a><b>c</b></a> 
$ xmllint --format test.xml 
<a> 
    <b>c</b> 
</a> 
$ xmllint --format test.xml > test.formatted.xml 
$ cat test.formatted.xml 
<a> 
    <b>c</b> 
</a> 
$ 
+1

यह वास्तविक फाइल पर काम नहीं कर रहा का उत्पादन करेगा। मेरे एक्सएमएल का फ़ाइल आकार लगभग 583 एमबी है। प्रारूप विकल्प एक छोटी आकार की फ़ाइल पर काम करता है लेकिन जब मैं इसे वास्तविक फ़ाइल पर लागू करता हूं तो बैश ऑपरेशन को मारता है। बड़ी फ़ाइलों को स्वरूपित करने के लिए कोई विचार, भाग में या तो ... – HardCode

+0

583 एमबी? शायद आपको इंडेंटेशन के लिए अपने स्वयं के SAX हैंडलर को लागू करना चाहिए। –

+0

और मैं यह कैसे कर सकता हूं। बस मुझे इस – HardCode

10
tidy -xml -i -q 

-xml - निर्दिष्ट इनपुट अच्छी तरह से एक्सएमएल बनाई है

-q - दबाने अनावश्यक उत्पादन

मैं - मांगपत्र तत्व सामग्री

साफ कर सकते हैं फ़ाइलें और stdin/stdout

के साथ काम
echo '<a><b>c</b></a>' | tidy -xml -i -q 

 <a> 
     <b>c</b> 
    </a>
संबंधित मुद्दे