【问题标题】:Create XML on JAVA在 JAVA 上创建 XML
【发布时间】:2016-08-26 19:49:19
【问题描述】:

我需要在 JAVA 上创建一个 XML,但要在一个元素上创建多个字段:

<cities>
  <city_insert city_id="123" city_name="São Paulo" />
  <city_insert city_id="456" city_name="Rio de Janeiro"/>
</cities>

如上例所示,元素 city_insert 需要有 city_idcity_name ,一个元素可以有多个字段。

如何在Java 上做到这一点? 我搜索了 DOMJDOM 解析器,但仍然不知道它是如何工作的。

谢谢!

【问题讨论】:

  • 你在正确的轨道上...... DOM 可以非常直接地完成......
  • 直串连接有什么问题?

标签: java xml


【解决方案1】:

请参阅此问题以使用 DOM 解析器创建 XML。

Create XML file using java

为了创建一个属性(你提到的字段),调用 setAttribute() 方法。

nodelist = doc.getElementsByTagName("city_insert");
for (Element element : nodelist) {
   Element parent = element.getParentNode()
   parent.setAttribute("city_id", "123");
   parent.setAttribute("city_name", "São Paulo");
} 

【讨论】:

    【解决方案2】:

    我总是使用 jaxb 来做这些事情

    首先,从你的xml生成一个xsd(网上有很多免费的在线生成器)

    对于你的xml,一个在线生成的xsd如下:

    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="cities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="city_insert" maxOccurs="unbounded" minOccurs="0">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute type="xs:short" name="city_id" use="optional"/>
                    <xs:attribute type="xs:string" name="city_name" use="optional"/>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    

    然后,使用 jaxb(许多 IDE,如 Eclipse 都有一种简单的方法)从 xsd 生成 jaxb 类:

    点击完成,这是java控制台输出:

    parsing a schema...
    compiling a schema...
    com\erax\xml\test\xsd\Cities.java
    com\erax\xml\test\xsd\ObjectFactory.java
    

    以及生成的类:

    那就只用jaxb编组来序列化和反序列化

    【讨论】:

    • 哇!我也不知道这个,谢谢你的帮助!祝您度过愉快的一周!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2015-12-09
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多