如何从字符串中剥离标记?

时间:2017-11-07 10:56:31

标签: javascript html dom

我从HTTP get获得以下响应。

<HTML><BODY>Now='11/7/2017 4:08:34 PM' Process='chrome' SessionID=1 User='Local\User' Culture='en-US'<BR></BODY></HTML>

我需要将正文中的数据转换为JSON对象。所以我试图删除HTML标签。虽然它有所不同,但我已尝试过,因为在 solution 中。它适用于HTML标记,但不适用于<html>本身。

我也尝试过如下:

var content = "<HTML><BODY>Now='11/7/2017 4:08:34 PM' Process='chrome' SessionID=1 User='Local\User' Culture='en-US'<BR></BODY></HTML>";

var tag = document.createElement("html");
tag.outerHtml = content;

它出现以下错误:

Uncaught DOMException: Failed to set the 'outerHTML' property on 'Element': This element has no parent node.

虽然我知道可以使用regex来实现,但我希望在没有regex的情况下实现。

有人可以解决吗?

2 个答案:

答案 0 :(得分:0)

使用DOMParser()将HTML字符串转换为DOM:

# This compose file defines the docker stack for swarm deployement
#

version: "3"

networks:
  myoverlay:
    driver: overlay

volumes:
    dbdata:

services:
  mymongo:
    image: "mvertes/alpine-mongo:latest"
    command: ["mongod","--quiet"]
    ports:
      - 27017:27017
    deploy:
      replicas: 1
    volumes:
      - dbdata:/data/db/
    networks:
      - myoverlay

  myrestheart:
    image: openjdk:8-jre-alpine
    volumes:
      - ./target/MyRestheart-1.0-SNAPSHOT.jar:/myjar.jar:ro
    ports:
      - 8080:8080
    command: ["java","-Dmongo=mongodb://mymongo:27017", "-jar", "/myjar.jar"]
    deploy:
      replicas: 1
    networks:
      - myoverlay

  mynginx:
    image: nginx:alpine    
    ports:
      - 8081:8081    
    volumes:
      - ./nginx.conf:/nginx.conf
    command: ["nginx", "-g","daemon off;","-c","/nginx.conf"]
    deploy:
      replicas: 1
    networks:
      - myoverlay

答案 1 :(得分:-2)

刚刚创建了一个简单的codepen。请尝试,它应该工作:

https://codepen.io/vishalkaului/pen/rYMGoy

+6和 - 16将在开始<BODY>标记之前和结束</BODY>标记之前排除内容。它包括<BODY></BODY>标记的排除。

(function () {
    let serverResponse = "<HTML><BODY>Now='11/7/2017 4:08:34 PM' 
    Process='chrome' SessionID=1 User='Local\User' Culture='en-
    US'<BR></BODY></HTML>";



 console.log(serverResponse.substr(serverResponse.indexOf('<BODY>')+6,serverResponse.indexOf('</BODY>')-16));
})()

注意: 只有当您知道响应的结构相同时,此解决方案才适合。但是,内容可以变化,但响应数据之前和之后的标签相同。