如何在nodejs中的特定元素之后追加元素

时间:2017-11-25 06:17:26

标签: node.js xml append

我的.XMl是

<?xml version="1.0" encoding="utf-8"?>

<data>
    <shell id="TX-alg1-title">Lesson 2.1</shell>
    <options id="parent">
        <option id="TX-alg1">TX16E_ISE_0005</option>
        <option id="TX-alg1-CID">9780353053</option>
    </options>	
</data>

我想在先前存在于xml中的shell标记之后添加另一个shell标记。

预期的O / p

<?xml version="1.0" encoding="utf-8"?>

<data>
    <shell id="TX-alg1-title">Lesson 2.1</shell>
    <shell id="CA-int1-title">Lesson 2.1</shell>
    <options id="parent">
        <option id="TX-alg1">TX16E_ISE_0005</option>
        <option id="TX-alg1-CID">9780353053</option>
    </options>	
</data>

我正在app.js中阅读我的.XML文件

fs.readFile( './dlo_custom_en-US.xml', function(err, data) {
    
});

请告知如何在nodejs中已经存在shell标记之后附加shell标记。

1 个答案:

答案 0 :(得分:2)

问题几乎相似Regex match text between tags 节点注意到除了服务器端的javascript。几乎所有编程语言都有 regexp 来查找模式。这是最简单的解决方案,但您应该更多地了解正则表达式

fs.readFile( './dlo_custom_en-US.xml', function(err, data) {
    data.replace(/\<shell(.)*\<\/shell>/, "new replacement here")
}); 

*****更新***** 来自JavaScript: How can I insert a string at a specific index

var fs =require('fs')
String.prototype.splice = function(idx, rem, str) {
    return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));
};

fs.readFile( './dlo_custom_en-US.xml',"utf8", function(err, data) {
  if(err) return 
   var index  = data.lastIndexOf('</shell>')+8
   console.log(index)
  var data=   data.splice(index,0, 'newwwwwwwwwww')
   console.log(data)
   fs.writeFile('./new.xml',data,(err, done)=>{
    if(err) return 
    console.log(err, done)
   })
});