【问题标题】:Array of strings convert to XML DOM字符串数组转换为 XML DOM
【发布时间】:2020-09-28 01:03:35
【问题描述】:

我有以下字符串数组,请注意,在我的情况下,数组的长度永远不会超过 4

["Scott","Bill","Basketball","2000"]

为了给您一些背景信息,我将此数组存储在浏览器的本地存储中。好的,现在我陷入了将这个数组“变形”为 XML 的困境。让我解释, 我正在寻找类似的东西

<root>
     <person>
            <pnane>Scott</pname>
            <psurname>Bill</pname>
            <pnane>Basketball</pname>
            <pnane>2000</pname>
     </person>
</root>



总结一下,我正在寻找转换字符串数组并将其值传递到 XML 预定义模板。

对此有什么想法/启示吗?

谢谢 ;)

【问题讨论】:

  • 如果这是一个 html 页面,它会很容易做到。我从未使用过 Xml。数组内的值可以用innerHtml的形式赋值,逻辑一样吗?
  • @CanUver 是的,问题是这些值,Scott,Bill... 取自用户在表单上的输入,使用 document.getElementsByClassName 获取信息
  • 你能不能说得具体一点,让我更了解你?
  • 是的,抱歉英语对我来说很难。我的意思是您可以通过 innerHTML 轻松分配。 @CanUver

标签: javascript html xml parsing dom


【解决方案1】:

你可以使用jquery轻松转换xml对象

var arr= ["Scott&","Bill<test>","Basketball","2000"]
var xmlStr="<root><person>";
xmlStr+="<pname>"+removeSpecialchars(arr[0])+"</pname>"
xmlStr+="<psurname>"+removeSpecialchars(arr[1])+"</psurname>"
xmlStr+="<psuppot>"+removeSpecialchars(arr[2])+"</psuppot>"
xmlStr+="<pyear>"+removeSpecialchars(arr[3])+"</pyear>"
xmlStr+="</person></root>";


var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlStr,"text/xml");

console.log(xmlDoc.documentElement.innerHTML);

function removeSpecialchars(el) {
   return el.replace(/&/g, '&amp;amp;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&apos');
}

【讨论】:

  • 不能用vanilla JS做吗?没有外部插件
  • 糟糕的答案,它完全忽略了字符串包含&amp;&lt; 等特殊字符的可能性。我们从那些不得不处理由于这种粗心大意而导致的糟糕 XML 的人们那里收到了很多 SO 帖子。
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 2017-11-27
  • 2015-11-21
  • 1970-01-01
相关资源
最近更新 更多