1. java讀取XML位置數據畫圖。
我來幫你一把,分析問題;
讀取XML文件的內容:
java項目內導入dom4j jar包,利用SAXReader讀取xml文件,在java程序中實例化的對象類是Document,讀取XML文件中的內容;
xml文件中的存儲思路
<image>
<name>圖片名</name>
<Xposition>X軸位置</Xposition>
<Yposition>Y軸位置</Yposition>
</image>
畫圖:使用的java自帶的swing就可以主程序即成JFrame,裡面實例化一個JPanle,讀取XML文件為所有圖片設定位置就可以了;
大體思路就是這樣,需要具體的寫法,比較麻煩也不清楚你的圖片需要怎麼切割,什麼業務邏輯,只能說到這了,有問題可以追問;
2. javaEE開發中做省市區級聯 一般用什麼技術來做請看清題干
如果訪問量大數據多的話,我建議還是讀取xml,因為xml比讀取資料庫省資源,而且呢如果想換美國的省市換一個xml文件就可以了,這樣靈活一點,而且效率也不低.
3. 如何通過已有xml格式的全國城市經緯度數據,外部任意輸入一個經緯度得到對應城市名,用java實現。
把xml里的數據保存到資料庫里,做查詢就是唄,你如果不用資料庫,只使用xml,那就解析xml推薦使用dom4j來解析,解析到map中通過key也就是你說的經緯度來取得城市。
至於xml解析,套路就那些,網上有很多已有的實現,考過來調一下就可以
4. 學Java需要掌握 xml嗎
學習java必須掌握xml知識,包括新建xml標簽文件、如何解析xml文件節點等等知識,這些知識在web項目或者桌面項目中,都會在網路上傳輸數據,使用xml文件傳輸形式,可以節省流量,統一格式讀取數據。
在電子計算機中,標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種的信息比如文章等。它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。是Internet環境中跨平台的、依賴於內容的技術,也是當今處理分布式結構信息的有效工具。早在1998年,W3C就發布了XML1.0規范,使用它來簡化Internet的文檔信息傳輸。
5. java 怎麼解析xml數據包數據 將xml各節點下的數據取出來
xml解析方法可以說有4種工具;
jdom,dom,sax,一般比較好懂的就是jdom,你網路jdom就有很多,網路文庫也可以
6. 有關java和xml的
一般情況是使用DOM,SAX這是2個開原的插件,你只要在你的程序里導入就可以了JDOM或者DOM4J的JAR包就可以了。
下載的 這2個插件都有自己的網站,建議使用JDOM這個比較簡單的,至於如何讀和寫,網上有很多的例子.
XML作為全球通用的結構化語言,越來越受人們青睞,各種開發平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML開發作為宣傳口號之一 。由於筆者所從事的電子政務開發較早的引入了XML,所以嘗到了許多甜頭,在許多項目中利用XML數據交換信息,省去了許多麻煩事,不用制定繁鎖的數據格式,利用XML數據易於表達,也利於一線開發者跟蹤調試。
筆者先前也曾發表過相關的文章,比如《簡析Delphi中的XML編程》一文,有興趣的讀者可以到Google網(http://www.google.com)去搜索一下,有很多媒體轉載。今天筆者想探討的是關於JAVA中的XML編程,希望對正在或想要學習XML編程的新老讀者有所幫助。
在XML應用中,最常用也最實用的莫過於XML文件的讀寫,所以筆者通過一個簡單的XML文件讀寫來作簡要分析。可以在任何文本編輯器中先建立如下結構的XML文件,類似於HTML結構,但XML語義比較嚴格,起始標記必須配對,比如"〈學生花名冊〉"與"〈/學生花名冊〉"對應,空格多少可不必在意,但一般都以縮格形式書寫,便於閱讀。把此文件命名為Input.xml,可以在任何支持XML的瀏覽器中打開測試一下,如果輸入正確,在瀏覽中可以看到此文件的樹形表示結構。如果您還對XML結構感到比較陌生,建議先看看《簡析Delphi中的XML編程》一文中關於XML文件的說明。
Input.xml
[code:1:af65f1d5b3]
<?xml version="1.0" encoding="GB2312"?>
<學生花名冊>
<學生 性別 = "男">
<姓名>李華</姓名>
<年齡>14</年齡>
<電話>6287555</電話>
</學生>
<學生 性別 = "男">
<姓名>張三</姓名>
<年齡>16</年齡>
<電話>8273425</電話>
</學生>
</學生花名冊>
[/code:1:af65f1d5b3]
准備工作做完後,接著就開始寫實質性的JAVA代碼了。為保存從XML文件讀入的信息,需要先建一個簡單的Bean來保存學生信息,命名為StudentBean,代碼如下所示:
StudentBean.java
[code:1:af65f1d5b3]
public class StudentBean {
private String sex; //學生性別
private String name; //學生姓名
private int age; //學生年齡
private String phone; //電話號碼
public void setSex(String s) {
sex = s;
}
public void setName(String s) {
name = s;
}
public void setAge(int a) {
age = a;
}
public void setPhone(String s) {
phone = s;
}
public String getSex() {
return sex;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getPhone() {
return phone;
}
}
[/code:1:af65f1d5b3]
之後寫XML的測試類,
TESTXml.java
[code:1:af65f1d5b3]
import java.io.*; //Java基礎包,包含各種IO操作
import java.util.*; //Java基礎包,包含各種標准數據結構操作
import javax.xml.parsers.*; //XML解析器介面
import org.w3c.dom.*; //XML的DOM實現
import org.apache.crimson.tree.XmlDocument; //寫XML文件要用到
public class XMLTest {
Vector student_Vector;
XMLTest() {
}
//為了保存多個學生信息,還得藉助一個集合類(並不是單純意義上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),這里採用Vector向量類。定義在XMLTest測試類中,命名為student_Vector。然後定義兩個方法readXMLFile和writeXMLFile,實現讀寫操作。代碼如下:
private void readXMLFile(String inFile) throws Exception {
//為解析XML作準備,創建DocumentBuilderFactory實例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
}
catch (ParserConfigurationException pce) {
System.err.println(pce); //出異常時輸出異常信息,然後退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(inFile);
}
catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
}
catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
//下面是解析XML的全過程,比較簡單,先取根元素"學生花名冊"
Element root = doc.getDocumentElement();
//取"學生"元素列表
NodeList students = root.getElementsByTagName("學生");
for (int i = 0; i < students.getLength(); i++) {
//依次取每個"學生"元素
Element student = (Element) students.item(i);
//創建一個學生的Bean實例
StudentBean studentBean = new StudentBean();
//取學生的性別屬性
studentBean.setSex(student.getAttribute("性別"));
//取"姓名"元素,下面類同
NodeList names = student.getElementsByTagName("姓名");
if (names.getLength() == 1) {
Element e = (Element) names.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setName(t.getNodeValue());
}
NodeList ages = student.getElementsByTagName("年齡");
if (ages.getLength() == 1) {
Element e = (Element) ages.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setAge(Integer.parseInt(t.getNodeValue()));
}
NodeList phones = student.getElementsByTagName("電話");
if (phones.getLength() == 1) {
Element e = (Element) phones.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setPhone(t.getNodeValue());
}
student_Vector.add(studentBean);
}
}
private void writeXMLFile(String outFile) throws Exception {
//為解析XML作準備,創建DocumentBuilderFactory實例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
}
catch (ParserConfigurationException pce) {
System.err.println(pce);
System.exit(1);
}
Document doc = null;
doc = db.newDocument();
//下面是建立XML文檔內容的過程,先建立根元素"學生花名冊"
Element root = doc.createElement("學生花名冊");
//根元素添加上文檔
doc.appendChild(root);
//取學生信息的Bean列表
for (int i = 0; i < student_Vector.size(); i++) {
//依次取每個學生的信息
StudentBean studentBean = (StudentBean) student_Vector.get(i);
//建立"學生"元素,添加到根元素
Element student = doc.createElement("學生");
student.setAttribute("性別", studentBean.getSex());
root.appendChild(student);
//建立"姓名"元素,添加到學生下面,下同
Element name = doc.createElement("姓名");
student.appendChild(name);
Text tName = doc.createTextNode(studentBean.getName());
name.appendChild(tName);
Element age = doc.createElement("年齡");
student.appendChild(age);
Text tAge = doc.createTextNode(String.valueOf(studentBean.
getAge()));
age.appendChild(tAge);
Element phone = doc.createElement("電話");
student.appendChild(phone);
Text tPhone = doc.createTextNode(studentBean.getPhone());
phone.appendChild(tPhone);
}
//把XML文檔輸出到指定的文件
FileOutputStream outStream = new FileOutputStream(outFile);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
( (XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
}
//最後加入測試主函數,如下:
public static void main(String[] args) throws Exception {
//建立測試實例
XMLTest xmlTest = new XMLTest();
//初始化向量列表
xmlTest.student_Vector = new Vector();
System.out.println("開始讀Input.xml文件");
xmlTest.readXMLFile("Input.xml");
System.out.println("讀入完畢,開始寫Output.xml文件");
xmlTest.writeXMLFile("Output.xml");
System.out.println("寫入完成");
System.in.read();
}
}[/code:1:af65f1d5b3]
了,保存好StudentBean和XMLTest,把Input.xml保存到工作目錄下。如果您輸入很仔細,沒敲錯字母的話,可以看到"寫入完成"了,去瞧瞧Output.xml文件和Input.xml文件是不是一樣吧。如果您在調試過程中發現有什麼問題,歡迎通過E-Mail:[email protected]與筆者取得聯系。 [/code]
7. JAVA獲取XML文件並輸出
importnet.sf.saxon.*;
importnet.sf.saxon.s9api.*;
publicclassS9XQueryExample{
publicstaticvoidmain(String[]args)throwsException{
Processorprocessor=newProcessor(newConfiguration());
XQueryCompilercompiler=processor.newXQueryCompiler();
XQueryEvaluatorevaluator=compiler.compile("for$sindoc('classes.xml')//studentorderbynumber($s/score)returnstring-join(($s/name,$s/age,$s/score),'')").load();
XdmValuevalue=evaluator.evaluate();
for(XdmItemitem:value){
System.out.println(item.getStringValue());
}
evaluator.close();
}
}
javac-cpsaxon9he.jarS9XQueryExample.java
java-cpsaxon9he.jar;.S9XQueryExample
A2080
B3090
C40100
8. java解析xml的幾種方式哪種最好
(1)DOM解析
DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取;
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法;
9. java解析xml的幾種方式哪種最好
(1)DOM解析
DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取
和操作文檔的任意部分,是W3C的官方標准
【優點】
①允許應用程序對數據和結構做出更改。
②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。
【缺點】
①通常需要載入整個XML文檔來構造層次結構,消耗資源大。
【解析詳解】
①構建Document對象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = bdf.newDocumentBuilder();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(xml文件);
Document doc = bd.parse(is);
②遍歷DOM對象
Document: XML文檔對象,由解析器獲取
NodeList: 節點數組
Node: 節點(包括element、#text)
Element: 元素,可用於獲取屬性參數
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法
完成解析工作,解析XML文檔的邏輯需要應用程序完成
【優勢】
①不需要等待所有數據都被處理,分析就能立即開始。
②只在讀取數據時檢查數據,不需要保存在內存中。
③可以在某個條件得到滿足時停止解析,不必解析整個文檔。
④效率和性能較高,能解析大於系統內存的文檔。
【缺點】
①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關系等),文檔越復雜程序就越復雜。
②單向導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。
【原理】
簡單的說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束時通知事件
處理函數(回調函數),進行相應處理,直到文檔結束
【事件處理器類型】
①訪問XML DTD:DTDHandler
②低級訪問解析錯誤:ErrorHandler
③訪問文檔內容:ContextHandler
【DefaultHandler類】
SAX事件處理程序的默認基類,實現了DTDHandler、ErrorHandler、ContextHandler和EntityResolver介面,通常
做法是,繼承該基類,重寫需要的方法,如startDocument()
【創建SAX解析器】
SAXParserFactory saxf = SAXParserFactory.newInstance();
SAXParser sax = saxf.newSAXParser();
註:關於遍歷
①深度優先遍歷(Depthi-First Traserval)
②廣度優先遍歷(Width-First Traserval)
(3)JDOM(Java-based Document Object Model)
Java特定的文檔對象模型。自身不包含解析器,使用SAX
【優點】
①使用具體類而不是介面,簡化了DOM的API。
②大量使用了Java集合類,方便了Java開發人員。
【缺點】
①沒有較好的靈活性。
②性能較差。
(4)DOM4J(Document Object Model for Java)
簡單易用,採用Java集合框架,並完全支持DOM、SAX和JAXP
【優點】
①大量使用了Java集合類,方便Java開發人員,同時提供一些提高性能的替代方法。
②支持XPath。
③有很好的性能。
【缺點】
①大量使用了介面,API較為復雜。
(5)StAX(Streaming API for XML)
流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持,JDK1.6新特性
【和推式解析相比的優點】
①在拉式解析中,事件是由解析應用產生的,因此拉式解析中向客戶端提供的是解析規則,而不是解析器。
②同推式解析相比,拉式解析的代碼更簡單,而且不用那麼多庫。
③拉式解析客戶端能夠一次讀取多個XML文件。
④拉式解析允許你過濾XML文件和跳過解析事件。
【簡介】
StAX API的實現是使用了Java Web服務開發(JWSDP)1.6,並結合了Sun Java流式XML分析器(SJSXP)-它位於
javax.xml.stream包中。XMLStreamReader介面用於分析一個XML文檔,而XMLStreamWriter介面用於生成一個
XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的游標機制
形成對照。
答案來自網路知道 僅供參考