-1

私はグーグルで良い例を見つけることができないので、おそらくあなたは私のためのチュートリアルを知っています:

このようにネストされるJavaにxmlを読み込みたい

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <art>
    <name>x</name>
    <first>y</first>
    <alist>
        <set>1</set>
        <set>2</set>
        <set>3</set>
    </alist>
  </art>
  <art>
    <name>z</name>
    <first>a</first>
    <alist>
        <set>1</set>
        <set>2</set>
        <set>3</set>
    </alist>
  </art>
...
</config>

http://www.developerfusion.com/code/2064/a-simple-way-to-read-an-xml-file-in-java/のようにそれを行うことができますが、「set」のような追加のタグはありません。もの。私はこれの初心者であり、例を使って学びます。

よろしくお願いします、

Adreas

4

3 に答える 3

1

この投稿と同じ答えを使用します:そのようなドキュメントを解析するにはどうすればよいですか?

XMLスキーマを反映するオブジェクトモデルを使用することをお勧めします。

そのモデルでは、パーサーが行う必要があるのは、解析プロセス中にオブジェクトを構築することだけです。

これにより、XMLファイルをXStreamなどのJavaオブジェクトに変換するためだけに構築された優れたフレームワークを使用することもできます。

于 2012-09-16T16:39:26.190 に答える
0

DOMパーサー、SAXパーサーまたはPullパーサーは小さいレベルで解析するのが良いですが、大きくなるほど管理が難しくなります.....

以下を使用してみてください。

- JAXP and JAXB

- Castor

于 2012-09-16T16:43:28.857 に答える
0

JAXB (JSR-222)を使用して、必要に応じて処理できる Java オブジェクトに XML を読み込むことができます。JAXB の実装は、Java SE 6 以降の JDK/JRE に含まれています。以下に例を示します。

設定

JAXB は例外による構成です。これは、XML 表現をデフォルトとは異なるものにしたい場合にのみ注釈を追加する必要があることを意味します (参照: http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html )。

package forum12448687;

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Config {

    private List<Art> art;

}

美術

package forum12448687;

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class Art {

    private String name;

    private String first;

    @XmlElementWrapper
    @XmlElement(name="set")
    private List<String> alist;

}

デモ

次のコードは、XML をオブジェクトから読み取り、XML に書き戻す方法を示しています。

package forum12448687;

import java.io.File;
import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Config.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File xml = new File("src/forum12448687/input.xml");
        Config config = (Config) unmarshaller.unmarshal(xml);

        Marshaller marshaller= jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(config, System.out);
    }

}

input.xml/出力

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
    <art>
        <name>x</name>
        <first>y</first>
        <alist>
            <set>1</set>
            <set>2</set>
            <set>3</set>
        </alist>
    </art>
    <art>
        <name>z</name>
        <first>a</first>
        <alist>
            <set>1</set>
            <set>2</set>
            <set>3</set>
        </alist>
    </art>
</config>
于 2012-09-16T17:44:41.677 に答える