停止将xml标记转换为小写 - jquery

时间:2018-01-17 10:34:25

标签: javascript jquery xml

我正在使用Draw.io,我必须将json转换为XML,这是我成功完成的,但我遇到的问题是我的所有xml标签都转到小写auto。 让我们说,如果我使用<mxCell></mxCell>创建标记,它将转换为<mxcell></mxcell>。 但是对于draw.io,我需要保持相同的XML格式。任何方式这样做?

var apple = '<mxCell />';
var $div = $('<div>');
$div.append(apple);
$("#graphXMlDiv").text($div.html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div id="graphXMlDiv"></div>

工作jsfiddle

2 个答案:

答案 0 :(得分:0)

看看这个:

let XMLTag = function(tagName) {
  this.tagName = tagName;
  this.children = [];
  this.padding = '';
  this.parent = null;
}

XMLTag.prototype.addPadding = function() {
	this.padding = this.padding + '\t';
}

XMLTag.prototype.getPadding = function() {
	var current = this;
	let padding = '';
	while (current !== null) {
		padding += current.padding;
		current = current.parent;
	}
    return padding;
}

XMLTag.prototype.setParent = function(parent) {
	this.parent = parent;
}

XMLTag.prototype.append = function(child) {
  child.addPadding();
  child.setParent(this);
  this.children.push(child);
}

XMLTag.prototype.toText = function() {
  if (this.children.length === 0) {
    return `${this.getPadding()}<${this.tagName}/>`;
  } else {
    let childrenText = this.children.map(c => c.toText()).join(`\n`);
    return `${this.getPadding()}<${this.tagName}>\n${childrenText}\n${this.getPadding()}</${this.tagName}>` 
  }
}

var apple = new XMLTag('mxCell');
var anotherTag = new XMLTag('anotherTag');
var anotherTag1 = new XMLTag('anotherTag1');
apple.append(anotherTag);
anotherTag.append(anotherTag1);
console.log(apple.toText());

答案 1 :(得分:0)

我不确定你的意图所以我假设有两种可能的解决方案。

您希望插入简单字符串而不是XML节点

在这种情况下,只需这样做:

&#13;
&#13;
var $div = $('<div/>');
$div.text('<mxCell><mxCell/>');
$("#graphXMlDiv").text($div.text());
//Then I would add the answer to this StackOverflow question 
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="graphXMlDiv"></div>
&#13;
&#13;
&#13;

请注意,我没有使用$div.html()$('#graph....')提供数据,因为您在$div中插入的内容不是正确的HTML,因此不应该对待就这样。

如果你想加载一个XML文档,然后在$ div中添加myCell所有XML节点的内容,那么你可以这样做。

&#13;
&#13;
var apple = '<mxCell>Data inside mxCell</mxCell>',
  $div = $('<div/>')
$apple_xml = $($.parseXML(apple));
$apple_xml.find('mxCell').each(function() {
  $div.html($(this).text());
});
$("#graphXMlDiv").text($div.html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="graphXMlDiv"></div>
&#13;
&#13;
&#13;