【问题标题】:How to retrieve data between XML tags in node.js如何在 node.js 中的 XML 标记之间检索数据
【发布时间】:2020-01-20 21:39:16
【问题描述】:

我正在尝试从 XML 标记中获取数据并在节点 JS 中为其分配一个变量,这就是我尝试过的。

 //Sample XML
let sampleXML = "<Response>
                   <Header>
                     <tag1>I am trying to get this</tag1>
                     <tag2>This one too</tag2>
                   </Header>
                   <Detail>
                     <tag1>XYZ</tag1>
                     <tag2>ABC</tag2>
                   </Detail>
              </Response>"




var betweenString = sampleXML.match(/<Header>([^<]*)<\/Header>/);

console.log('Between String:' + betweenString);

这给了我在字符串之间的空值。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 我试过这两行 var betweenString = sampleXML.match(/
    ([^/); console.log('Between String:' + betweenString);

标签: node.js xml


【解决方案1】:

除了这个问题是特定于 Node.js 的事实之外,它与 Find everything between two XML tags with RegEx 重复——您应该特别阅读解释为什么使用正则表达式处理 XML 是一个非常糟糕的主意的答案。

【讨论】:

    【解决方案2】:

    你可以试试这个,它可能比使用正则表达式更安全、更精确(如果你在 xml 文档中有多个同名标签。

    const { transform } = require('camaro')
    let sampleXML = `<Response>
                       <Header>
                         <tag1>I am trying to get this</tag1>
                         <tag2>This one too</tag2>
                       </Header>
                       <Detail>
                         <tag1>XYZ</tag1>
                         <tag2>ABC</tag2>
                       </Detail>
                  </Response>`
    
    
    
    
    ;(async function () {
        const template = {
            betweenString: 'raw(Response/Header)'
        }
    
        const result = await transform(sampleXML, template)
        console.log('Between String:' + result.betweenString)
    
    })()
    

    输出

    Between String:<Header>
            <tag1>I am trying to get this</tag1>
            <tag2>This one too</tag2>
    </Header>
    

    这通过解析 xml、获取节点(通过 xpath - 我们指定从何处获取它Response/Header)并打印节点文本来工作。但是,在您的情况下,您可能希望在解析后删除打开和关闭 Header 标记。

    【讨论】:

      猜你喜欢
      • 2019-12-06
      • 1970-01-01
      • 2020-04-12
      • 2016-12-18
      • 2015-04-06
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多