解析xml的字符实体无效

时间:2014-07-22 00:37:07

标签: node.js xml2js

我正在尝试解析一个xml字符串并收到错误

[Error: Invalid character entity
Line: 0
Column: 837
Char:  ]

xml不喜欢括号吗?我是否需要用\\]等替换所有括号。感谢

2 个答案:

答案 0 :(得分:8)

好的,无效字符是破折号和&amp ;.我通过执行以下操作来修复它:

xml = data.testSteps.replace(/[\n\r]/g, '\\n')
                    .replace(/&/g,"&")
                    .replace(/-/g,"-");

由于

答案 1 :(得分:4)

使用节点domparser将不得不对每个不容易被解析为字符串的字符进行字符串替换。如果要解析可能包含不同字符的大量XML,这将非常有用。

我建议xmldom,因为我已成功使用xml2js

组合使用如下所示:

function sort(){
  var ss=SpreadsheetApp.getActiveSpreadsheet()
  var s=ss.getSheets()[0].activate() //get Sheet1
  var allNamed=s.getNamedRanges() //get named ranges
  for(var i=0;i<allNamed.length;i++){ //for each named range
      var lr=ss.getRangeByName(allNamed[i].getName()).getLastRow() //get last row number of named range
      var col=ss.getRangeByName(allNamed[i].getName()).getColumn() //get column of named range
      var toSort=s.getRange(2,col,lr-2,1).getValues().sort() //get row 2 through next to last row. Sort
  if(allNamed[i].getName()=="Section3"){ //if named range is Section3, sort descending
      toSort.reverse()
  }
  s.getRange(2,col,lr-2,1).setValues(toSort) //return sorted part of nam   ed range.
  }}