Tôi không quen thuộc với API của Matlab, nhưng tôi chỉ ra rằng sử dụng phương pháp DOM do Pursuit vạch ra sẽ mất nhiều thời gian/bộ nhớ nhất nếu bạn chỉ muốn các giá trị cụ thể ra khỏi luồng XML mà bạn đang quay trở lại kết nối HTTP.
Trong khi STAX sẽ cung cấp cho bạn phương pháp phân tích cú pháp nhanh nhất trong Java, việc sử dụng API có thể khó sử dụng, đặc biệt nếu bạn không quen với Java. Bạn có thể sử dụng SJXP là một ontop trừu tượng của phân tích cú pháp STAX trong Java (từ chối trách nhiệm: Tôi là tác giả) cho phép bạn xác định đường dẫn đến các phần tử bạn muốn, sau đó bạn cung cấp cho trình phân tích cú pháp luồng (luồng HTTP của bạn trong trường hợp này)) và nó rút ra tất cả các giá trị cho bạn.
Như một ví dụ, giả sử bạn muốn các giá trị/root/tiểu bang và/root/lượng ra trong những ví dụ XML bạn đăng, Java thực tế sẽ giống như thế này:
// Create /root/state rule
IRule stateRule = new DefaultRule(Type.CHARACTER, "/root/state") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
System.out.println("State is: " + text);
}
}
// Create /root/volume rule
IRule volRule = new DefaultRule(Type.CHARACTER, "/state/volume") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
System.out.println("Volume is: " + text);
}
}
// Create the parser with the given rules
XMLParser parser = new XMLParser(stateRule, volRule);
Bạn có thể làm tất cả điều đó khởi tạo vào chương trình bắt đầu sau đó tại một số điểm sau khi bạn đang xử lý các luồng dữ liệu từ kết nối HTTP của bạn, bạn sẽ làm điều gì đó như:
parser.parser(httpConnection.getOutputStream());
hoặc tương tự; sau đó tất cả mã trình xử lý bạn đã xác định trong các quy tắc của bạn sẽ được gọi là trình phân tích cú pháp chạy qua luồng ký tự từ kết nối HTTP.
Như tôi đã đề cập, tôi không quen thuộc với Matlab và không biết các cách thích hợp để "Matlab-i-fy" mã này, nhưng có vẻ như từ ví dụ đầu tiên bạn có thể ít nhiều chỉ sử dụng API Java trực tiếp trong trường hợp này, giải pháp này sẽ nhanh hơn và sử dụng bộ nhớ ít hơn đáng kể để phân tích cú pháp nếu điều đó quan trọng hơn cách tiếp cận DOM.
Nguồn
2012-03-04 14:23:33
Bạn đang sử dụng cửa sổ? Nếu có, thì tôi có thể cung cấp cho bạn một giải pháp .NET. –