cswprofile.java
来自「esri的ArcGIS Server超级学习模板程序(for java)」· Java 代码 · 共 520 行 · 第 1/2 页
JAVA
520 行
Source xsltSource = new StreamSource(this.getClass().getClassLoader()
.getResourceAsStream(metadataxslt));
// Prepare output writer
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory xformFactory = TransformerFactory.newInstance();
// Get an XSL Transformer object
Transformer transformer = xformFactory.newTransformer(xsltSource);
// Transform response string with xslt parser
transformer.transform(responseSource, result);
LOG.debug("CSW GetMetadataByIdResponse: " +
result.getWriter().toString());
if (usesMetadataResourceUrl) {
record.setMetadataResourceURL(result.getWriter().toString());
} else {
record.setFullMetadata(result.getWriter().toString());
}
}
}
/**
* Parse a CSW response.
*
* @remark The CSW response is parsed and the records collection is populated with
* the result.The reponse is parsed based on the response xslt.
* @param ="param1" The String response
* @param ="param2" The recordlist which needs to be populated
*
* @param responseString
* @param recordslist
* @throws TransformerException
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
* @throws XPathExpressionException
*/
public void readCSWGetRecordsResponse(String responseString,
CswRecords recordList)
throws TransformerException, ParserConfigurationException, SAXException,
IOException, XPathExpressionException {
String RECORD_TAG = "Record";
// Massage responseString as a proper object
StringReader reader = new StringReader(responseString);
Source responseSource = new StreamSource(reader);
// Load xslt to parse responseString
//File xsltFile = new File(responsexslt);
//Source xsltSource = new StreamSource(xsltFile);
Source xsltSource = new StreamSource(this.getClass().getClassLoader()
.getResourceAsStream(responsexslt));
// Prepare output writer
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory xformFactory = TransformerFactory.newInstance();
// Get an XSL Transformer object
Transformer transformer = xformFactory.newTransformer(xsltSource);
// Transform response string with xslt parser
transformer.transform(responseSource, result);
String response = result.getWriter().toString();
LOG.debug("CSW GetRecords Response: " + response);
InputStream responseStream = new ByteArrayInputStream(response.getBytes());
// create xml document object
// XML parser load doc specified by filename
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document doc = (Document) builder.parse(responseStream);
// Get a list of nodes of which root is Profile tag
NodeList recordNodes = doc.getElementsByTagName(RECORD_TAG);
// create CswRecord and convert xml document node to each record
XPath xpath = XPathFactory.newInstance().newXPath();
for (int i = 0; i < recordNodes.getLength(); i++) {
Node currNode = recordNodes.item(i);
CswRecord record = new CswRecord();
double minx;
double miny;
double maxx;
double maxy;
record.setId(xpath.evaluate("ID", currNode));
record.setTitle(xpath.evaluate("Title", currNode));
record.setAbstractData(xpath.evaluate("Abstract", currNode));
record.setDateModified(xpath.evaluate("DateModified", currNode));
record.setProvenance(xpath.evaluate("Provenance", currNode));
// CHECK THIS PART
String type = xpath.evaluate("Type", currNode);
if (type.equalsIgnoreCase("livedata")) {
record.setLiveDataOrMap(true);
} else {
record.setLiveDataOrMap(false);
}
try {
minx = Double.parseDouble(xpath.evaluate("Envelope/MinX",
currNode));
miny = Double.parseDouble(xpath.evaluate("Envelope/MinY",
currNode));
maxx = Double.parseDouble(xpath.evaluate("Envelope/MaxX",
currNode));
maxy = Double.parseDouble(xpath.evaluate("Envelope/MaxY",
currNode));
record.setEnvelope(new Envelope(minx, miny, maxx, maxy));
} catch (NumberFormatException ex) {
LOG.debug("NumberFormatException occurred parsing CS/W record bounding box from CS/W response",
ex);
}
recordList.addRecord(record);
}
}
public boolean SupportContentTypeQuery() {
return false;
}
public boolean SupportSpatialQuery() {
return false;
}
/**
* replace special xml character
*
* @remark Encode special characters (such as &, ", <, >, ') to percent values.
* </remarks>
* <param name="data
*
* @param data
*/
private String XmlEscape(String data) {
data = data.replace("&", "&");
data = data.replace("<", "<");
data = data.replace(">", ">");
data = data.replace("\"", """);
data = data.replace("'", "'");
return data;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean isFilter_extentsearch() {
return filter_extentsearch;
}
public void setFilter_extentsearch(boolean filter_extentsearch) {
this.filter_extentsearch = filter_extentsearch;
}
public boolean isFilter_livedatamap() {
return filter_livedatamap;
}
public void setFilter_livedatamap(boolean filter_livedatamap) {
this.filter_livedatamap = filter_livedatamap;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGetRecordByIdKVP() {
return this.getRecordByIdKVP;
}
public void setGetRecordByIdKVP(String kvp) {
this.getRecordByIdKVP = kvp;
}
public String getMetadataxslt() {
return metadataxslt;
}
public void setMetadataxslt(String metadataxslt) {
this.metadataxslt = metadataxslt;
}
public Transformer getMetadataxsltobj() {
return metadataXsltObj;
}
public void setMetadataxsltobj(Transformer metadataxsltobj) {
this.metadataXsltObj = metadataxsltobj;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRequestxslt() {
return requestxslt;
}
public void setRequestxslt(String requestxslt) {
this.requestxslt = requestxslt;
}
public Transformer getRequestxsltobj() {
return requestXsltObj;
}
public void setRequestxsltobj(Transformer requestxsltobj) {
this.requestXsltObj = requestxsltobj;
}
public String getResponsexslt() {
return responsexslt;
}
public void setResponsexslt(String responsexslt) {
this.responsexslt = responsexslt;
}
public Transformer getResponsexsltobj() {
return responseXsltObj;
}
public void setResponsexsltobj(Transformer responsexsltobj) {
this.responseXsltObj = responsexsltobj;
}
public String getGetRepositoryItemKVP() {
return this.getRepositoryItemKVP;
}
public void setGetRepositoryItemKVP(String kvp) {
this.getRepositoryItemKVP = kvp;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?