118 lines
4.6 KiB
HTML
118 lines
4.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<!-- <link rel="stylesheet" href="styles.css"> -->
|
|
<link rel="stylesheet" href="../assets/css/tools/r11form.css">
|
|
<link rel="stylesheet" href="../assets/css/highlight.css">
|
|
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
|
|
<script src="../assets/scripts/tools/scripts.js"></script>
|
|
<script src="../assets/scripts/tools/highlight.js"></script>
|
|
<script>hljs.highlightAll();</script>
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta charset="utf-8" />
|
|
</head>
|
|
|
|
<body onload="init();">
|
|
<div class="container">
|
|
<div id="tool" class="tool rwd-expandable">
|
|
<div class="tool-context">
|
|
<div class="headline">
|
|
<h1>Online XML Formatter</h1>
|
|
</div>
|
|
<select name="processors" id="processors" class="hidden">
|
|
<option value="libxml">libXML</option>
|
|
</select>
|
|
|
|
<div class="display-space-between">
|
|
<div>
|
|
<b><span id="formatinfo"></span></b><br>
|
|
<label for="xmlArea"><b>Insert your XML:</b></label>
|
|
</div>
|
|
<div>
|
|
<button class="action-button active" id="clearXMLButton" style="padding: 3px 10px;"
|
|
onclick="clearDataField()">Clear</button>
|
|
<button class="action-button active" id="defaultXMLButton" style="padding: 3px 10px;"
|
|
onclick="fillDefaultXML(this)">Insert default XML</button>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<pre><code class="language-xml bordered-field textarea-700" id="xmlArea" contenteditable="True"></code></pre>
|
|
<br><br>
|
|
<button id="prettifyButton" class="max-width block-label action-button active"
|
|
onclick="performFormatRequest('prettify', true, 'xmlArea', 'xmlArea')">Prettify XML</button>
|
|
<button id="minimizeButton" class="max-width block-label action-button active"
|
|
onclick="performFormatRequest('minimize', true, 'xmlArea', 'xmlArea')">Minimize XML</button>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="tooltip-window rwd-hideable">
|
|
<h2>What is this?</h2>
|
|
<p>This tool has 2 main functions:
|
|
<ul>
|
|
<li><strong>Prettify XML</strong> to make it human-readable (add indentation etc.)</li>
|
|
<li><strong>Minimize XML</strong> to make it more compact (exactly opposite to above)</li>
|
|
</ul>
|
|
</p>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<script>
|
|
function getProcessor() {
|
|
return "libxml";
|
|
}
|
|
|
|
function getVersion() {
|
|
return "1.0"
|
|
}
|
|
|
|
function init() {
|
|
setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here');
|
|
}
|
|
|
|
const editorEle = document.getElementById('xmlArea');
|
|
|
|
// Handle the `paste` event
|
|
editorEle.addEventListener('paste', function (e) {
|
|
// Prevent the default action
|
|
e.preventDefault();
|
|
|
|
// Get the copied text from the clipboard
|
|
const text = e.clipboardData
|
|
? (e.originalEvent || e).clipboardData.getData('text/plain')
|
|
: // For IE
|
|
window.clipboardData
|
|
? window.clipboardData.getData('Text')
|
|
: '';
|
|
|
|
if (document.queryCommandSupported('insertText')) {
|
|
document.execCommand('insertText', false, text);
|
|
} else {
|
|
// Insert text at the current position of caret
|
|
const range = document.getSelection().getRangeAt(0);
|
|
range.deleteContents();
|
|
|
|
const textNode = document.createTextNode(text);
|
|
range.insertNode(textNode);
|
|
range.selectNodeContents(textNode);
|
|
range.collapse(false);
|
|
|
|
const selection = window.getSelection();
|
|
selection.removeAllRanges();
|
|
selection.addRange(range);
|
|
|
|
}
|
|
highlightSyntax(editorEle.id);
|
|
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|