gpt4 book ai didi

javascript - 将XML解析为js数据,如何访问特定标签?

转载 作者:行者123 更新时间:2023-11-30 00:12:01 24 4
gpt4 key购买 nike

情况

对于数据库分析工具,我需要将一堆生成的 XML 文件(hibernate 逆向工程 XML 文件)解析为 javascript 以实现可视化目的。作为一名 java 开发人员,我对 javascript 还很陌生,所以我尝试一次小步前进。最终我想将 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">。 .

此外,我还根据@Lars Grammel 对问题 How to import XML data using d3.js? 给出的答案进行了广泛的尝试,以使事情正常进行。 .尽管链接和答案很好,但我无法让它适用于我的情况(没有足够的专业知识)

第一个“结束”目标是创建一个以所有表名为节点的强制布局(还没有链接,链接最终将是一对多和多对一的映射),如图所示在 https://bl.ocks.org/mbostock/1080941

最佳答案

你想读出“表格”属性的值吗?

例如,您可以在 jQuery 中做到这一点:

$.get("some.xml", function(d){
console.log($(d).find("class").attr("table"));
});

这将输出:“类别”

关于javascript - 将XML解析为js数据,如何访问特定标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36073870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com