1

以下のスクリプトを使用しました。出力は
X 値: 123 Y 値: 123 X 値: 123 Y 値: 130 です。

最初の X を X0 に設定するにはどうすればよいですか。最初の Y は Y0、2 番目の X は X1、2 番目の Y は Y1 ? 私は SAX パーサーを使用しました。入力ファイルは適切に処理されました。次に、線を描画するために X0、X1、Y0、Y1 を定義したいと思います。

public static void main(String argv[]) {

        try {

        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();

        DefaultHandler handler = new DefaultHandler() {

        boolean xele = false;
        boolean yele = false;


        public void startElement(String uri, String localName,String qName, 
                    Attributes attributes) throws SAXException {

            if (qName.equalsIgnoreCase("X")) {
                xele = true;
            }

            if (qName.equalsIgnoreCase("Y")) {
                yele = true;
            }


        }
        public void characters(char ch[], int start, int length) throws SAXException {

            if (xele) {
                System.out.println("X value : " + new String(ch, start, length));
                xele = false;
            }

            if (yele) {
                System.out.println("Y value : " + new String(ch, start, length));
                yele = false;
            }


        }

         };

           saxParser.parse("c:\\input.xml", handler);

         } catch (Exception e) {
           e.printStackTrace();
         }

ありがとう

4

1 に答える 1

0

charactersDefaultHandler実装で、パーサーによってメソッドが呼び出されるたびに値を格納した後に増分するXとYの値とインデックスを保持する配列を宣言し、ゲッターを介してこれらの配列を公開できます。java.util.Listまたは、 /などのコレクションを使用java.util.ArrayListして値を保持することもできます。

public static void main(String argv[])
{
    try
    {

        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();

        MyDefaultHandler handler = new MyDefaultHandler();
        saxParser.parse("c:\\input.xml", handler);
        System.out.println(handler.getXList() + ", " + handler.getYList());
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

static class MyDefaultHandler extends DefaultHandler
{
    private List<Integer> xList = new ArrayList<Integer>();
    private List<Integer> yList = new ArrayList<Integer>();
    boolean xele = false;
    boolean yele = false;

    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
    {

        if (qName.equalsIgnoreCase("X"))
        {
            xele = true;
        }

        if (qName.equalsIgnoreCase("Y"))
        {
            yele = true;
        }

    }

    public void characters(char ch[], int start, int length) throws SAXException
    {

        if (xele)
        {
            System.out.println("X value : " + new String(ch, start, length));
            xele = false;
            xList.add(Integer.parseInt(new String(ch, start, length)));
        }

        if (yele)
        {
            System.out.println("Y value : " + new String(ch, start, length));
            yele = false;
            yList.add(Integer.parseInt(new String(ch, start, length)));
        }
    }

    public List<Integer> getXList()
    {
        return xList;
    }

    public List<Integer> getYList()
    {
        return yList;
    }

};
于 2012-09-19T17:51:37.923 に答える