附加到 DOM 时 XML 属性变为小写

Posted

技术标签:

【中文标题】附加到 DOM 时 XML 属性变为小写【英文标题】:XML attribute becomes lower case when appending to DOM 【发布时间】:2017-07-20 21:01:43 【问题描述】:

在将 XML 附加到 DOM 时,有没有办法让 XML attribute 保持帕斯卡大小写“LateProcessing”?下面的代码显示了属性LateProcessing="true",但是一旦将XML 附加到DOM 中,它就会变成小写lateprocessing="true"

var jObj = 
  "Smart Shoes": 
    "Product": "Smart Shoes",
    "Price": 24.99,
    "Quantity": "1x "
  ,
  "Denim Jeans": 
    "Product": "Denim Jeans",
    "Price": 30,
    "Quantity": "1x "
  

var xmlString = '<xml id="POSCMD" LateProcessing="true"><commands><injectfieldmacro type="field" name="FIELD_CLEAR"/>';

for (var item in jObj) 
  if (jObj.hasOwnProperty(item)) 
    xmlString += '<injectdata type="literal" data="' + jObj[item].Price + '"/>'; // I don't know where you got UPC from
    xmlString += '<injectfieldmacro type="field" name="FIELD_UPC"/>'
  


xmlString += '</commands></xml>';

$('body').append(xmlString);
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【问题讨论】:

这是由于浏览器的 html 渲染器造成的。最佳实践表明 HTML 应该全部小写,因此字符串会这样输出到 DOM。当使用console.log() 或更好地在实际的 XML 查看器中查看纯字符串时,大小写不会受到影响。 是的,在console.log或源代码中查看就可以了。那么就没有办法解决了吗? 不,您不能只将 XML 放入 DOM,因为它会被视为 HTML,但是有一些解决方法:***.com/questions/349250/… 谢谢@RoryMcCrossan 【参考方案1】:

这是因为您试图将 XML 添加到 HTML DOM。 HTML 规范了元素名称的大小写,而 XML 没有。不清楚你为什么要这样做,所以我不能建议你应该做什么,我只能说这不是一件好事。

通过字符串连接构造词法 XML 然后对其进行解析也不是好的做法。尤其是如果您没有尝试对可能出现在变量字符串中的特殊字符(例如 &amp;&lt;")应用转义。

【讨论】:

以上是关于附加到 DOM 时 XML 属性变为小写的主要内容,如果未能解决你的问题,请参考以下文章

与 API 交互时,标题键变为小写 - React Native

如何防止 groovy 创建小写(元)属性名称?

关于json传值大小写的“坑”

防止 BeautifulSoup 将我的 XML 标记转换为小写

js json转xml(可自定义属性,区分大小写)

变量名的第一个字母从大写变为小写