Pretty XML
What is it?
Features
1. Prettify XML (XML Formatting)
2. Pretty XML: Minimize
Keyboard Shortcuts
Settings
Requirements
Installation
Known Issues
Change Log
For more information
What is it?
Pretty XML is a XML formatter extension for Visual Studio Code and VSCodium. It formats XML documents just like Visual Studio on Windows.
Supported file extensions:
- xml
- xaml
- axml
- xsd
- xsl
- plist
- mobileconfig
- config
- csproj
- svg
- resx and all other XML type of files.
There is also Visual Studio for Mac version of this extension. Check it out at PrettyXML.VSMac
Suggestions, improvement PRs are welcome.










Features
Right Click and Select Prettify XML or use shortcut
- Position each attribute on a separate line.
- First attribute on same line as start element start tag.
- All attributes indented aligning with first attribute.
- If no child for an element then close inline end tag.
- No empty lines.
- Supports
'
and whitespace unicodes in attribute value for XAML parser compatibility.
- Lets you format entire valid XML document.
- Lets you format part of an XML document. XML can be partial and invalid. This is in beta, so feel free to submit pull request with improvements.

Before

After

2. Pretty XML: Minimize
Minimizes XML.

Keyboard Shortcuts
Command |
Platform |
Shortcut |
Prettify XML |
Mac |
Cmd+K L |
Prettify XML |
Windows, Linux |
Control+K L |
PrettyXML: Minimize |
Mac |
Cmd+K ` |
PrettyXML: Minimize |
Windows, Linux |
Control+K ` |
Note
You can change these in Preferences → Keyboard Shortcuts if you want.
Settings
These will be for Prettify XML command.
Setting Key |
Default Value |
Description |
prettyxml.settings.indentSpaceLength |
4 |
No. of spaces for indentation. |
prettyxml.settings.useSingleQuotes |
false |
Use ' instead of " |
prettyxml.settings.useSelfClosingTag |
true |
If no child nodes then self closing tag /> |
prettyxml.settings.formatOnSave |
false |
Enable format on save |
prettyxml.settings.allowSingleQuoteInAttributeValue |
true |
Allows ' in attribute values instead of ' |
prettyxml.settings.addSpaceBeforeSelfClosingTag |
true |
Adds space before self closing tag |
prettyxml.settings.wrapCommentTextWithSpaces |
true |
Wraps comment text with a single space |
prettyxml.settings.allowWhiteSpaceUnicodesInAttributeValues |
true |
Allows white space unicodes in attribute values |
prettyxml.settings.positionFirstAttributeOnSameLine |
true |
Position first attribute on same line. |
prettyxml.settings.positionAllAttributesOnFirstLine |
false |
Position all attributes on first line |
prettyxml.settings.preserveWhiteSpacesInComment |
false |
Preserves whitespaces in a comment. |
prettyxml.settings.addSpaceBeforeEndOfXmlDeclaration |
false |
Add space before end of XML declaration. |
prettyxml.settings.attributesInNewlineThreshold |
1 |
Attributes count threshold to position attributes in newlines. |
prettyxml.settings.enableLogs |
false |
Enables logs |
prettyxml.settings.wildCardedExceptionsForPositionAllAttributesOnFirstLine |
Array<string> |
Wild card exceptions for elements to ignore positionAllAttributesOnFirstLine |
prettyxml.settings.addEmptyLineBetweenElements |
false |
Add empty line between elements if the child count is greater than 2 |

Attributes In Newline Threshold
Example:
Value = 2
<Element Attribute1="Value1" Attribute2="Value2" />
Output#1
<Element Attribute1="Value1" Attribute2="Value2" />
<Element Attribute1="Value1" Attribute2="Value2" Attribute3="Value3" />
Output#2
<Element Attribute1="Value1"
Attribute2="Value2"
Attribute3="Value3"/>
Wild Carded Exceptions For Position All Attributes On First Line
List of element names to ignore Position All Attributes On First Line setting. Include element names or patterns here.
Example:
"prettyxml.settings.wildCardedExceptionsForPositionAllAttributesOnFirstLine": ["Content*"]
<View>
<Content X="X"
Y="Y" Z="Z">
<Label text="{i18>LabelText}" />
<Input id="Input1"
value="{service>description}" />
</Content>
</View>
Ouput
<View>
<Content X="X"
Y="Y"
Z="Z">
<Label text="{i18>LabelText}" />
<Input id="Input1" value="{service>description}" />
</Content>
</View>
Add Empty Line Between Elements
If enabled, and child elements count is greater than 2 then adds empty line between elements.
[!NOTE]
Please note it wont add empty element before first element and after last element.
<Root>
<Element1>Text1</Element1>
<Element2>Text2</Element2>
<Element3>Text3</Element3>
</Root>
Output 1
<Root>
<Element1>Text1</Element1>
<Element2>Text2</Element2>
<Element3>Text3</Element3>
</Root>
Requirements
Installation
Visual Studio Code - Visual Studio MarketPlace
For VSCodium - open-vsx.org
Known Issues
- Limited DTD support.
- Formats valid XML files only. Syntax errors are displayed.
Issues can be reported at issues section