以下是我的xml文件格式
<?xml version="1.0" encoding="UTF-8"?>
<Hospitals>
<Hospital hospitalId="14">
<HospitalName>aaa</HospitalName>
<Department>
<DepartmentName departmentId="21">card</DepartmentName>
<Clinics>
<ClinicName clinicId="38">c7</ClinicName>
<Status Flag="0">0</Status>
<ClinicName clinicId="39">c2</ClinicName>
<Status Flag="0">0</Status>
</Clinics>
</Department>
</Hospital>
<Hospital hospitalId="15">
<HospitalName>bbbb</HospitalName>
<Department>
<DepartmentName departmentId="22">dental</DepartmentName>
<Clinics>
<ClinicName clinicId="35">c6</ClinicName>
<Status Flag="0">0</Status>
<ClinicName clinicId="36">c5</ClinicName>
<Status Flag="0">0</Status>
</Clinics>
</Department>
</Hospital>
帮助我从xml中读取java代码以打印如下所示的对象。我尝试使用this,但我能够打印出如下所示的格式
Root element :Hospitals
----------------------
hospital Id : 14
Hospital Name : aaa
department Id : 21
Department Name : card
clinicId : 38
ClinicName : c7
status : 0
Flag : 0
clinicId : 38
ClinicName : c2
status : 0
Flag : 0
----------------------
hospital Id : 15
Hospital Name : bbbb
department Id : 22
Department Name : dental
clinicId : 35
ClinicName : c6
status : 0
Flag : 0
clinicId : 38
ClinicName : c5
status : 0
Flag : 0
任何形式的帮助都会帮助我快速完成工作......提前致谢
答案 0 :(得分:1)
您使用的是哪个版本的Java?如果您为XML定义了XSD,那么您可以通过许多选项在java对象中解析XML,并且可以读取或执行您想要对数据执行的任何操作。这里有几个选项
答案 1 :(得分:0)
嗯,众所周知,XML解析是使用DOM和SAX完成的,但它们是核心。 初学者很难使用复杂的API进行管理。 我宁愿建议使用框架作品Apache Digester
它会很容易,它也使用SAX,但在现场,你不需要使用SAX。
答案 2 :(得分:0)
我建议使用XSLT或XQuery进行此操作;在这两种情况下,代码都比在Java中简单得多。如果您需要在Java应用程序中对数据进行一些复杂的处理,那么使用Java是合理的,但如果您只想提取一些信息并将其输出到文本文件,那么使用更高级别的工具会更好。
这是XSLT样式表的入门名单:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="NL" select="'
'"/>
<xsl:template match="Hospitals">
<xsl:text>Root element: Hospitals</xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Hospital">
<xsl:text>
------------------</xsl:text>
<xsl:text>
hospital id: </xsl:text>
<xsl:value-of select="@hospitalId"/>
<xsl:text>
</xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="HospitalName">
<xsl:text>
hospital name: </xsl:text>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="DepartmentName">
<xsl:text>
department id: </xsl:text>
<xsl:value-of select="@departmentId"/>
<xsl:text>
</xsl:text>
<xsl:text>
department name: </xsl:text>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
<xsl:apply-templates/>
</xsl:template>
以及更多相同的内容。
您当然可以从Java(或从命令行或从Ant等)运行XSLT代码。 JDK内置了XSLT 1.0处理器,或者您可以下载Saxon以获得XSLT 2.0处理器。这个简单的例子只使用XSLT 1.0,但你很快就会发现自己需要XSLT 2.0的功能,所以你不妨从那开始。