Cần giúp đõ đọc file XML

apollo9x

New Member
20/10/12
1
0
1
31
Mình có một file xlm với cấu trúc như sau:
Code:
<Entry>
                <HeadWord>e</HeadWord>
                <Syntactic>
                        <SyntacticArgument>
                                <feat val="Sub"/>
                                <feat val="NP"/>
                        </SyntacticArgument>
                        <SyntacticArgument>
                                <feat val="Obj"/>
                                <feat  val="Clause"/>
                        </SyntacticArgument>
                </Syntactic>
                <Semantic>
                        <SynSemArgMap>
                                <feat val="Sub"/>
                                <feat val="Exp"/>
                                <feat val="Person"/>
                        </SynSemArgMap>
                        <SynSemArgMap>
                                <feat val="Obj"/>
                                <feat val="So"/>
                        <SynSemArgMap>
              </Semantic>
        </Entry>
Mình chỉ muốn đọc các thẻ <feat> nằm trong thẻ <SyntacticArgument> thì làm thế nào nhỉ?
 

monday0rsunday

Active Member
21/10/11
511
93
28
Đọc xml có nhiều cách: DOM (file xml mô hình thành cây, đọc được nhiều lần, thuận tiện nhưng lâu và tốn bộ nhớ), SAX, StAX (2 cách sau đọc từ trên xuống, chỉ đọc được lần đầu tiên, nhưng nhanh và ít tốn bộ nhớ)
Bạn có thể search google theo các cách trên và làm theo hướng dẫn, có khá nhiều.
Theo mình bạn nên search DOM
 
  • Like
Reactions: apollo9x

jimhawkins

Member
2/6/11
74
17
8
cho bạn đoạn code để đọc
PHP:
import java.io.FileInputStream;
import java.net.URL;
import java.util.ArrayList;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class RssHandle extends DefaultHandler {
    boolean check = false;

    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        super.startElement(uri, localName, qName, attributes);
        if (qName.equals("SynSemArgMap"))
            check = true;
        else if (check) {
            if (qName.equals("feat"))
                System.out.println(attributes.getValue("val"));
        }
    }

    public static void main(String[] args) {
        RssHandle handle = new RssHandle();
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader reader = sp.getXMLReader();
            reader.setContentHandler(handle);
            InputSource input = new InputSource(new FileInputStream(
                    "C:\\entry.xml"));
            reader.parse(input);
        } catch (Exception e) {

        }
    }
}
 
  • Like
Reactions: apollo9x

echmapmap

New Member
13/5/13
2
0
1
31
Cho mình hỏi lun là mình có 1 file config.xml như sau

Code:
<domains>
    <domain>
        <names>domain1.vn,domain.vn,localhost</names>
        <url  medthod="GET">/home/*</url>
        <url medthod="GET">/rp</url>
        <url method="GET">*.jpg</url>
        <server port="80" ip="74.125.128.17"/>
    </domain>
    <domain>
        <names>apache.org,www.apache.org,www.lvvk1.com</names>
        <url  medthod="GET">/apache</url>
        <url method="GET">*.jpg</url>
        <server port="8080" ip="192.87.106.229"/>
    </domain>
</domains>
Mình làm tạo được 1 filter lọc các domain và url theo file xml trên trỏ tới địa chỉ URL được định trong đó nhưng URL mình thay đổi khi trỏ tới IP đó. Mình muốn URL không đổi vd: khi gõ domain.vn/home thì trỏ tới IP "74.125.128.17" nhưng URL vẫn giữ nguyên domain.vn/home

Cái nữa là làm sao tạo 1 cache lưu trang trên lại trong 1 thời gian timeout nào đó. Ai rành chỉ giúp với.