gpt4 book ai didi

javascript - 带有数据的 XML 模式?我如何用JS解析它?

转载 作者:行者123 更新时间:2023-11-30 18:33:50 25 4
gpt4 key购买 nike

我有一个 XML 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:element name="event">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:integer">55147</xsd:element>
<xsd:element name="opponent" type="xsd:string">Mount Pleasant</xsd:element>
<xsd:element name="game_date" type="xsd:string">2012-01-09</xsd:element>
<xsd:element name="start_time" type="xsd:string">6:00pm</xsd:element>
<xsd:element name="end_time" type="xsd:string"></xsd:element>
<xsd:element name="sport" type="xsd:string">Basketball</xsd:element>
<xsd:element name="level" type="xsd:string">Freshman</xsd:element>
<xsd:element name="gender" type="xsd:string">Boys</xsd:element>
<xsd:element name="year" type="xsd:string">2012</xsd:element>
<xsd:element name="season" type="xsd:string">Winter</xsd:element>
<xsd:element name="status" type="xsd:string"></xsd:element>
<xsd:element name="homeaway" type="xsd:string">Away</xsd:element>
<xsd:element name="facility"></xsd:element>
<xsd:element name="facility_id" type="xsd:integer"></xsd:element>
<xsd:element name="opponent">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ss_id" type="xsd:integer">126</xsd:element>
<xsd:element name="name" type="xsd:string">Mount Pleasant</xsd:element>
<xsd:element name="score" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="location">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ss_id" type="xsd:integer">1700</xsd:element>
<xsd:element name="name" type="xsd:string">Mt. Pleasant High School</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="score">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="result" type="xsd:string"></xsd:element>
<xsd:element name="ours" type="xsd:string"></xsd:element>
<xsd:element name="theirs" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="league" type="xsd:string"></xsd:element>
<xsd:element name="type" type="xsd:string">Game</xsd:element>
<xsd:element name="ss_id" type="xsd:string">7504900</xsd:element>
<xsd:element name="transportation" type="xsd:string"></xsd:element>
<xsd:element name="dismissal" type="xsd:string"></xsd:element>
<xsd:element name="return" type="xsd:string"></xsd:element>
<xsd:element name="comment">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="school" type="xsd:string"></xsd:element>
<xsd:element name="conference" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

我试过:

var itemList = xml.documentElement.getElementsByTagName("event");
var game_date = itemList.getElementsByTagName("game_date").text;

在 javascript 中能够解析它并从中获取信息。我想从这里的标签中读取数据。我在提取数据时遇到问题,因为这看起来像是带有数据的模式。这应该发生吗?

最佳答案

由于 XML 结构相当复杂,我会使用 XPath 来提取信息。使事情稍微复杂化的是,您需要一个命名空间解析器函数来处理 xsd 前缀。

// Namespace resolver function
function nsResolver(prefix) {
var ns = {
'xsd' : 'http://www.w3.org/2001/XMLSchema'
};
return ns[prefix] || null;
}

提取码

// Get a NodeList of all "event" elements
var eventNodeList = document.evaluate('/xsd:schema/xsd:element[@name="event"]', document, nsResolver, XPathResult.ANY_TYPE, null );
// var eventNodeList = document.evaluate('/xsd:schema/xsd:element[@name="event"]', document);

// Iterate over events
var currentEvent = eventNodeList.iterateNext();
while (currentEvent) {
// Get value from "game_date" element
var gameDate = document.evaluate('/xsd:complexType/xsd:sequence/xsd:element[@name="game_date"]/text()', currentEvent, nsResolver, XPathResult.ANY_TYPE,null).textContent

// Do something with the value
// ...

// Get next event element
currentEvent = eventNodeList.iterateNext();
}

关于javascript - 带有数据的 XML 模式?我如何用JS解析它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864604/

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