我正在尝试将HTML映射到结构完整的JSON中。那里有没有这样做的库,还是我需要编写自己的库?我想如果没有html2json库,我可以以xml2json库作为开始。毕竟,html只是xml的一种变体,对吗?
更新: 好的,我应该举一个例子。我想做的是以下内容。解析html字符串:
<div>
<span>text</span>Text2
</div>
变成这样的json对象:
{
"type" : "div",
"content" : [
{
"type" : "span",
"content" : [
"Text2"
]
},
"Text2"
]
}
注意 :如果您没有注意到标签,我正在寻找Javascript解决方案
我只是写了这个函数来实现您想要的功能,请尝试一下,让我知道它是否无法正常工作:
// Test with an element.
var initElement = document.getElementsByTagName("html")[0];
var json = mapDOM(initElement, true);
console.log(json);
// Test with a string.
initElement = "<div><span>text</span>Text2</div>";
json = mapDOM(initElement, true);
console.log(json);
function mapDOM(element, json) {
var treeObject = {};
// If string convert to document Node
if (typeof element === "string") {
if (window.DOMParser) {
parser = new DOMParser();
docNode = parser.parseFromString(element,"text/xml");
} else { // Microsoft strikes again
docNode = new ActiveXObject("Microsoft.XMLDOM");
docNode.async = false;
docNode.loadXML(element);
}
element = docNode.firstChild;
}
//Recursively loop through DOM elements and assign properties to object
function treeHTML(element, object) {
object["type"] = element.nodeName;
var nodeList = element.childNodes;
if (nodeList != null) {
if (nodeList.length) {
object["content"] = [];
for (var i = 0; i < nodeList.length; i++) {
if (nodeList[i].nodeType == 3) {
object["content"].push(nodeList[i].nodeValue);
} else {
object["content"].push({});
treeHTML(nodeList[i], object["content"][object["content"].length -1]);
}
}
}
}
if (element.attributes != null) {
if (element.attributes.length) {
object["attributes"] = {};
for (var i = 0; i < element.attributes.length; i++) {
object["attributes"][element.attributes[i].nodeName] = element.attributes[i].nodeValue;
}
}
}
}
treeHTML(element, treeObject);
return (json) ? JSON.stringify(treeObject) : treeObject;
}
工作示例:http :
//jsfiddle.net/JUSsf/(在chrome中测试,我不能保证完全支持浏览器-
您必须对此进行测试)。
它将创建一个对象,该对象包含您请求格式的HTML页面的树状结构,然后使用JSON.stringify()
大多数现代浏览器(IE8 +,Firefox
3+等)中包含的结构; 如果您需要支持较旧的浏览器,则可以包含json2.js。
它可以使用a DOM element
或string
包含有效XHTML的参数作为参数(我相信,我不确定DOMParser()
在某些情况下,will
是否会因设置为true而窒息,"text/xml"
或者只是不提供错误处理。不幸的是"text/html"
,浏览器支持不佳)。
您可以通过传递一个不同的值来轻松更改此函数的范围element
。传递的任何值都将成为JSON映射的根。
请享用
我想将XML节点值(从AJAX脚本发送的XML)映射到相应的HTML表单元素中。例如,XML数据; 应通过脚本插入HTML表单: 问题在于,脚本应该通用地适用于所有对象(不能预先知道XML中会给出哪些字段,例如,如果“fieldx”是用XML发送的,则该脚本应该满足document.myform.fieldx表单元素,并具有XML中的相应值)。所以这个脚本应该循环所有XML节点,并尝试将值设置为H
我已经用MapStruct 1.1工作了几天,但还没有达到我所需要的。 我想做的是:我想将JPA实体映射到DTO,以便在Primefaces项目中实现更好的属性视图绑定。 所以我有我的实体如下: 病人JAVA 人JAVA 我想把这些实体画成这样: 耐心等待。JAVA 潘松多。JAVA 我编写了Mapper类和一个实用程序,就像GitHub上的官方示例中描述的那样(https://github.co
问题内容: 我正在尝试将JSON文件映射到类对象,然后根据新接收的JSON更新卡。 我的JSON结构是这样的 我的班级看起来像这样: 如何将JSON文件中的值映射到CardInfo类创建的对象的字段中? 更新资料 以下试用版在 ci.description上 打印为null ,是否表示从未创建该对象? 更新2 打印cardInfo给出以下内容: {$ class:FirstCard,id:1,说明
我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢
假设我有这样的物体 我正在使用RestTemboard类从URL中获取json,如下所示: 之后,我想使用jackson对象映射器将json字符串转换为一个对象 将实体类作为第二个参数传递 问题是我应该如何编写ExampleJson实体来处理get-Showed json?我试过这样上课,但似乎不管用。 我得到了这样一个例外:
字符串statusCode 在映射中,我有: statusCode列:“STATUS_CD”,类型:“NVARCHAR” beanCreationException:创建名为“Transaction ManagerPostProcessor”的bean时出错: bean初始化失败;嵌套异常是 org.springframework.beans.factory.beanCreationExcepti