gpt4 book ai didi

java - 如何在Java中使用Sax/Dom解析器读取xml文件?

转载 作者:行者123 更新时间:2023-12-02 05:45:27 25 4
gpt4 key购买 nike

我想请教你一个问题。我想使用 sax/dom 解析器从 xml 读取数据,但我不知道如何在 java 中实现代码。非常感谢任何帮助...

以下有关要求的文字:

1/xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<rootElement>
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
<![CDATA[SELECT * FROM ORDERS]]>
</queryString>
<field name="ORDERID" class="java.lang.Integer"/>
<field name="CUSTOMERID" class="java.lang.String"/>
<field name="EMPLOYEEID" class="java.lang.Integer"/>
<field name="ORDERDATE" class="java.sql.Timestamp"/>
<field name="REQUIREDDATE" class="java.sql.Timestamp"/>
<field name="SHIPPEDDATE" class="java.sql.Timestamp"/>
<field name="SHIPVIA" class="java.lang.Integer"/>
<field name="FREIGHT" class="java.math.BigDecimal"/>
<field name="SHIPNAME" class="java.lang.String"/>
<field name="SHIPADDRESS" class="java.lang.String"/>
<field name="SHIPCITY" class="java.lang.String"/>
<field name="SHIPREGION" class="java.lang.String"/>
<field name="SHIPPOSTALCODE" class="java.lang.String"/>
<field name="SHIPCOUNTRY" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<columnHeader>
<band height="20" splitType="Stretch">
<staticText>
<reportElement uuid="da31a9d4-8ee7-481d-8b51-270539a2fdec" x="460" y="0" width="92" height="20"/>
<textElement>
<font isBold="true" isItalic="true" isUnderline="true"/>
</textElement>
<text><![CDATA[SHIPPEDDATE]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement uuid="60fb99da-64ef-4bf9-8a96-687c433be35a" x="460" y="0" width="92" height="20"/>
<textElement>
<font isBold="true" isItalic="true" isUnderline="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{SHIPPEDDATE}]]></textFieldExpression>
</textField>
</band>
</detail>
</rootElement>

2/预期结果:

element         : property
elment value : null
attribute name : name
attribute value : ireport.zoom
attribute name : value
attribute value : 1.0

element : property
elment value : null
attribute name : name
attribute value : ireport.x
attribute name : value
attribute value : 0

element : property
elment value : null
attribute name : name
attribute value : ireport.y
attribute name : value
attribute value : 0

element : queryString
elment value : SELECT * FROM ORDERS
attribute name : null
attribute value : null

element : ORDERID
attribute name : class
attribute value : java.lang.Integer

关于使用 java 程序的 sax/dom 解析器技术有什么想法吗?提前致谢。

最佳答案

SAX example tutorial与此主题相关的内容是一个很好的开始。

<小时/>

SAXParser Documentation中所示,一种解析方法是使用 DefaultHandler .

您主要关心并需要重写的三个“事件”是 startElementendElementcharacters

startElement 内部,您将捕获标记的 qName(元素)及其关联的 Attributes .

字符内部,您将捕获标签值(元素值)。

当标签关闭时,您将捕获您想要的所有必需数据。您可以使用 endElement 打印/存储该信息。

<小时/>

您将从 DefaultHandler 扩展开始

class MyHandler extends DefaultHandler {
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
//Capture tag name and attributes
super.startElement(uri, localName, qName, attributes);
}

@Override
public void characters(char[] ch, int start, int length) throws SAXException {
//Capture value.
super.characters(ch, start, length);
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
//Print or store the information
}
}

并相应地提供每个事件的实现。

关于java - 如何在Java中使用Sax/Dom解析器读取xml文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112813/

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