对于数据库分析工具,我需要将一堆生成的XML文件(hibernate反向工程XML文件)解析为javascript以进行可视化。由于我对javascript是一名java开发人员非常陌生,我试图一次采取一些小步骤。最终我想将xml文件解析为d3.js强制布局图,但这对我来说是个桥梁。
给出以下html文件:
<!DOCTYPE html>
<meta charset="utf-8">
<script src="//d3js.org/d3.v3.min.js"></script>
<script src=d3-queue.js></script>
<script>
var q = d3_queue.queue();
// TODO 1: for each xml in folder xyz ... defer(d3.xml, "dynamicvalue", "application/xml") instead of hard coded
.defer(d3.xml, "Actor.hbm.xml", "application/xml")
.defer(d3.xml, "Film.hbm.xml", "application/xml")
.defer(d3.xml, "Category.hbm.xml", "application/xml")
.await(analyze);
// obviously the function parameter need to be dynamic and not hard coded actor, film, category...
function analyze(error, actor,film,category) {
// TODO 2: for each read xml do ...
if (error) throw error;
console.log(category)
console.log("XML Root Tag Name: " + category.documentElement.tagName)
console.log("Checking Child Nodes: " + category.documentElement.childNodes[0].hasChildNodes)
console.log("First Child: " + category.documentElement.childNodes[1].firstChild.tagName)
console.log("Node Value: " + category.documentElement.childNodes[0].attributes.getNamedItem("id").nodeValue)
}
</script>
并给出以下示例.xml文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 15-mrt-2016 20:29:28 by Hibernate Tools 3.2.2.GA -->
<hibernate-mapping>
<class name="nl.sander.mieras.localhost.sakila.Category" table="category" catalog="sakila">
<id name="categoryId" type="java.lang.Byte">
<column name="category_id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="25" not-null="true" />
</property>
<property name="lastUpdate" type="timestamp">
<column name="last_update" length="0" not-null="true" />
</property>
<set name="filmCategories" inverse="true">
<key>
<column name="category_id" not-null="true" />
</key>
<one-to-many class="nl.sander.mieras.localhost.sakila.FilmCategory" />
</set>
</class>
</hibernate-mapping>
如何动态从表名中读取值(此处为:“category”)并将其保存到var节点?
我一直坚持将xml解析为正确的js数据已经有一段时间了,所以任何正确方向的推动都会很棒。
我已尝试过http://www.hiteshagrawal.com/javascript/javascript-parsing-xml-in-javascript/中的示例,但我没有得到预期的结果。那些预期的结果将是子节点类似<id name="categoryId" type="java.lang.Byte">
。
此外,我在@ How to import XML data using d3.js?问题上基于@Lars Grammel给出的答案进行了广泛的尝试。即使链接和答案很棒,我也无法让它适用于我的情况(不够专业知识)
第一个“结束”目标是创建一个强制布局,将所有表名称作为节点(还没有链接,链接最终将是一对多和多对一映射),如图所示在https://bl.ocks.org/mbostock/1080941
答案 0 :(得分:1)
您想读出“table” - 属性的值吗?
你可以这样做jQuery例如:
$.get("some.xml", function(d){
console.log($(d).find("class").attr("table"));
});
这将推出:“类别”