0

我正在尝试'<p>hi</p>'用“嗨”替换

我的 JavaScript:

var obj = {item:{title: params.title,description: params.text, link: req.headers['origin']+"/blog/blog-description/"+params.blog_id, guid:req.headers['origin']+"/blog/blog-description/"+params.blog_id}};

var xml2js = require('xml2js');     
var builder = new xml2js.Builder();
var xml = builder.buildObject(obj);
var modXml = xml.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '');
var modXml = xml.replace(/<(?:.|\n)*?>/gm, '');         
var new_text = modXml;

fs.readFile('public/feed.xml', function read(err, data) {
    if (err) throw err;
    var file_content = data.toString();
    var c = file_content.indexOf('</description>');
    var position = c + 14;
    file_content = file_content.substring(position);
    var file = fs.openSync('public/feed.xml','r+');
    var bufferedText = new Buffer(new_text+file_content);
    fs.writeSync(file, bufferedText, 0, bufferedText.length, position);
    fs.close(file);
});

我不知道哪里出了问题,有人可以建议帮助。

4

4 回答 4

2

试试这个:

xml.split('<p>hi</p>').join('hi');
于 2016-08-23T06:56:22.363 回答
1

由于 replace 返回一个字符串对象,您可以简单地链接调用:

你有没有尝试过:

var modXml = xml.replace('<p>', '').replace("</p>",'');

我认为您也可以将其压缩为一个正则表达式。

于 2016-08-22T06:45:51.263 回答
1

您可以使用正则表达式来剥离标签,也可以使用诸如striptags 之类的库

可选的正则表达式:

var text = '<p>aaa</p>';
console.log(text.replace(/<(?:.|\n)*?>/gm, ''));

striptags 库可用于去除所有标签,或仅去除特定标签:

var text = '<p>aaa</p>';
striptags(html);
striptags(html, ['p']);
于 2016-08-22T06:47:29.630 回答
1

xml2js 将您的<p>标签替换为&lt;p&gt;(和</p>with &lt;/p&gt;),因此您需要替换替换的字符串。此外,Builder()使用headless: true选项调用 - 然后您不需要替换标题。以下作品:

var obj = {item:{title: '<p>foobarbaz</p>',description: "<p>foo</p>", link: "<p>bar</p>", guid:"<p>baz</p>"}};

var xml2js = require('xml2js');
var builder = new xml2js.Builder({ headless: true });
var xml = builder.buildObject(obj);
var modXml = xml.replace(/&lt;p&gt;|&lt;\/p&gt;/gm, '');
console.log(modXml);

输出:

<item>
  <title>fobaba</title>
  <description>foo</description>
  <link>bar</link>
  <guid>baz</guid>
</item>
于 2016-08-22T07:37:06.413 回答