【问题标题】:Retrieve a single object instead of a list/array检索单个对象而不是列表/数组
【发布时间】:2021-04-19 15:38:09
【问题描述】:

我正在使用我找到的这个 xml 文件:https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms762271(v=vs.85)

我正在尝试检索作者的价值。所以用这段代码:

var val = xpath.select('/catalog/book[1]/author', root);

我希望它会返回:Gambardella, Matthew。但相反,它编写了一个包含 NodeName、tagName、docType、length、firsChild 等的数组。 如果我这样做:

val.forEach(function(n) {
    console.log("Each n: "+n);  
  }); 

我得到:Each n: <author>Gambardella, Matthew</author>

所以我的问题是,我如何获得属性值?我也试过val.getAttribue()

这是完整的代码:

var fs = require('fs');
var xmlDom = require('xmldom');
var xpath = require('xpath');

fs.readFile('books.xml', 'utf8', function (err, data) {
  if (err) {
    return console.log(err);
  } 
  
  var parser = new xmlDom.DOMParser(); 
  var serializer = new xmlDom.XMLSerializer();

  var root = parser.parseFromString(data, 'text/xml'); 
  var val = xpath.select('/catalog/book[1]/author', root);
  
  val.forEach(function(n) {
    console.log("Each n: "+n);  
  });  
  
});

【问题讨论】:

    标签: node.js xml dom xpath


    【解决方案1】:

    尝试改变

    var val = xpath.select('/catalog/book[1]/author', root);
    

    var val = xpath.select('/catalog/book[1]/author/text(), root);
    

    那时:

    val.forEach(function(n) {
        console.log("Each n: "+n);  
      }); 
    

    应该输出:

    Each n: Gambardella, Matthew
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 2014-03-24
      相关资源
      最近更新 更多