0

以下是我的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 代码以打印如下所示的 alues。我尝试了这个,但我能够按如下所示的格式打印

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

任何形式的帮助都将帮助我快速完成工作......在此先感谢

4

3 回答 3

1

您使用的是哪个版本的 Java?如果您为您的 XML 定义了 XSD,那么您可以通过许多选项在 java 对象中解析您的 XML,并且可以读取或执行您想要对数据执行的任何操作。这里有几个选项供您选择

  1. JAXB 2.0
  2. XStream

如果您使用的是 JDK 6.0+,则还有其他一些来自 Apache 和其他一些,JDK 提供了 JaxB,而 Xstream 非常轻巧且易于使用。

于 2012-07-26T06:05:43.223 回答
0

好吧,众所周知,XML 解析是使用 DOM 和 SAX 完成的,但它们是核心。初学者很难使用复杂的 API 集进行管理。我宁愿建议使用框架,Apache Digester

它会轻松,它也使用 SAX,但在场景下,您不需要使用 SAX。

于 2012-07-26T07:43:41.637 回答
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="'&#xa;'"/>

<xsl:template match="Hospitals">
  <xsl:text>Root element: Hospitals</xsl:text>
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="Hospital">
  <xsl:text>&#xa;------------------</xsl:text>
  <xsl:text>&#xa;hospital id: </xsl:text>
  <xsl:value-of select="@hospitalId"/>
  <xsl:text>&#xa;</xsl:text>
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="HospitalName">
  <xsl:text>&#xa;hospital name: </xsl:text>
  <xsl:value-of select="."/>
  <xsl:text>&#xa;</xsl:text>
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="DepartmentName">
  <xsl:text>&#xa;department id: </xsl:text>
  <xsl:value-of select="@departmentId"/>
  <xsl:text>&#xa;</xsl:text>
  <xsl:text>&#xa;department name: </xsl:text>
  <xsl:value-of select="."/>
  <xsl:text>&#xa;</xsl:text>
  <xsl:apply-templates/>
</xsl:template>

和更多相同。

您当然可以从 Java(或从命令行,或从 Ant 等)运行 XSLT 代码。JDK 带有内置的 XSLT 1.0 处理器,或者您可以下载 Saxon 以获得 XSLT 2.0 处理器。这个简单的例子只使用了 XSLT 1.0,但是您很快就会发现自己需要 XSLT 2.0 的特性,所以您不妨从这种方式开始。

于 2012-07-26T11:56:54.630 回答