導航:首頁 > 編程語言 > java循環xml節點

java循環xml節點

發布時間:2022-07-27 19:02:08

❶ 您好!關於上次用java獲取百度API返回的XML數據的節點值的問題,轉發後出現了死循環

//獲得轉發器
RequestDispatcher rd = request
.getRequestDispatcher("Geocoding.do");
//轉發
rd.forward(request, response);
你這里又轉回來當前的Servlet,代碼執行到這里又轉回來,當然會出現死循環.

❷ 哪位兄台給一個用java來創建xml文件、更新xml節點的例子

java創建文件不都是一樣嗎?
至於更新xml文件,看下這個··
別人的
xml:

<?xml version="1.0" encoding="UTF-8"?>

<users>

<Messages>
<sendName>sendUsers</sendName>
<receiveName>snake</receiveName>
<date>2007-12-04 12:20:00</date>
<status>0</status>
<message>this is Content</message>
</Messages>

</users>

java:

package com.lianxi.DAO;
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class UpdateXml {
public static boolean doc2XmlFile(Document document,String filename)
{
boolean flag = true;
try
{
/** 將document中的內容寫入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 編碼 */
//transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
}catch(Exception ex)
{
flag = false;
ex.printStackTrace();
}
return flag;
}

public static Document load(String filename)
{
Document document = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
document=builder.parse(new File(filename));
document.normalize();
}
catch (Exception ex){
ex.printStackTrace();
}
return document;
}
/**
* 演示修改文件的具體某個節點的值
*/
public static void xmlUpdateDemo()
{
Document document = load("c://Message.xml");
Node root=document.getDocumentElement();
/** 如果root有子元素 */
if(root.hasChildNodes())
{
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循環取得ftp所有節點 */
for (int i=0;i<ftpnodes.getLength();i++)
{
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k=0;k<ftplist.getLength();k++)
{
Node subnode = ftplist.item(k);
/** 刪除ftp-chn節點 */
// if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-chn")
// {
// ftpnodes.item(i).removeChild(subnode);
// }
/** 修改ftp-host的值為 192.168.0.1 */
if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="status")
{
subnode.getFirstChild().setNodeValue("1");
}
}

}
}

doc2XmlFile(document,"c://Message.xml");
}
public static void main(String args[])throws Exception
{
UpdateXml.xmlUpdateDemo();
}
}

❸ java 如何循環讀取xml下相同子節點

Reader reader = new InputStreamReader(con
.getInputStream());
SAXReader sax = new SAXReader();
// sax.setEncoding("GBK");

Document document = sax.read(reader);
document.setXMLEncoding("GBK");
Element root = document.getRootElement();
// Document doc = reader.read(read);
// Element root = doc.getRootElement();
readNode(root, "");

public static void readNode(Element root, String prefix) {
if (root == null) return;
// 獲取屬性
List attrs = root.attributes();
if (attrs != null && attrs.size() > 0) {
System.err.print(prefix);
for (Attribute attr : attrs) {
System.err.print(attr.getValue() + " ");
}
System.err.println();
}
// 獲取他的子節點
List childNodes = root.elements();
prefix += "\t";
for (Element e : childNodes) {
//輸出內容
System.err.println(e.getName()+":"+e.getData());
readNode(e, prefix);
}
}

❹ java中用dom4j如何循環XML各個節點,輸出屬性值到控制台請幫忙寫出代碼,謝謝!!急急、、急、、

要讀的xml文件

<?xml version="1.0" encoding="GB2312"?>
<學生花名冊>
<學生 性別 = "男">
<姓名>李華</姓名>
<年齡>14</年齡>
</學生>
<學生 性別 = "男">
<姓名>張三</姓名>
<年齡>16</年齡>
</學生>
</學生花名冊>
Vector students_Vector;

private Vector readXMLFile(String file) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document doc = builder.parse(file); // 獲取到xml文件

// 下面開始讀取
Element root = doc.getDocumentElement(); // 獲取根元素
NodeList students = root.getElementsByTagName_r("學生");
students_Vector = new Vector();
for (int i = 0; i < students.getLength(); i++) {
// 一次取得每一個學生元素
Element ss = (Element) students.item(i);

// 創建一個學生的實例
student stu = new student();
stu.setSex(ss.getAttribute("性別"));

NodeList names = ss.getElementsByTagName_r("姓名");
Element e = (Element) names.item(0);
Node t = e.getFirstChild();
stu.setName(t.getNodeValue());

NodeList ages = ss.getElementsByTagName_r("年齡");
e = (Element) ages.item(0);
t = e.getFirstChild();
stu.setAge(Integer.parseInt(t.getNodeValue()));

students_Vector.add(stu);
}
return students_Vector;
}

參照這個寫

❺ java sax如何循環接收xml文件中的元素

package com.xk008.test;

import java.io.File;
import java.io.IOException;
import javax.xml.parsers.*;
//sax解析需要導入的三個包
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/* ----------興建此類的步驟:(1)File-->New命令;打開Object Gallery對話框;(2)在對話框左側的數中選擇"XML"節點,
* 然後在右側選擇"SAX Handler",點"OK";(3)在新對話框的"class name"處鍵入MySaxParser[也可以取其它的]作為類名;
* (4)在此新對話框數型結構處,展開"ContentHandler"節點,選中"characters","endDocument","endElemne",
* "startDocument","startElement"五個節點,點"Finish";
* ----------修改此類生成的代碼:(1)刪除帶有"throws"方法的所有子句;(2)然後分別在帶有"throws"方法中鍵入以下類容;
* (3)Main方法的子句可以不變;
*/

//一個繼承org.xml.sax.helpers.DefaultHandler的類XX
public class Covert extends DefaultHandler {
//入口點Main
public static void main(String[] args) {
String uri = "table.xml";//獲取被解析xml文檔路徑
//工廠模式
try {
//獲取javax.xml.parsers.SAXParserFactory類的一個實例
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setValidating(false);
parserFactory.setNamespaceAware(false);
//創建一個javax.xml.parsers.SAXParser對象
SAXParser parser = parserFactory.newSAXParser();
//實例當前類
Covert covert = new Covert();
//解析路徑為uri的XML文件
parser.parse(uri, covert);
} catch (IOException exception) {
exception.printStackTrace();
} catch (SAXException exception) {
exception.printStackTrace();
} catch (ParserConfigurationException exception) {
exception.printStackTrace();
} catch (FactoryConfigurationError exception) {
exception.printStackTrace();
}
}
/**
* @todo Implement method "characters"
* 以字元形式輸出元素值,且判斷是否為'換行符'
*/
public void characters(char[] ch, int start, int length) throws SAXException {
String str=new String(ch,start,length);
if( !str.startsWith("\n")){
System.out.println("值:"+str+"");
}
}

/**
* @todo Implement method "endDocument"
*/
public void endDocument() throws SAXException {
System.out.println("解析XML文檔結束");
}

/**
* @todo Implement method "endElement"
*/
public void endElement(String url, String localName, String qName) throws SAXException {
System.out.println(qName+"元素解析結束\n");
}

/**
* @todo Implement method "startDocument"
*/
public void startDocument() throws SAXException {
System.out.println("解析XML文檔開始:\n");
}

/**
* @todo Implement method "startElement"
*/
public void startElement(String uri, String localName, String qName,Attributes attributes)
throws SAXException {
System.out.println(qName+"元素解析開始");
}
}

❻ Java怎麼解析相同XML節點求大神指導一下。

packagecom.sun;

importjava.io.File;
importjava.util.List;

importorg.dom4j.Document;
importorg.dom4j.DocumentException;
importorg.dom4j.Element;
importorg.dom4j.io.SAXReader;

publicclassDom4jTest{

publicvoidfun(){
Filefile=newFile("d:\toRead.xml");
//用SAXReader來載入xml文件
SAXReadersaxReader=newSAXReader();
//獲取xml文件的Document對象
Documentdocument=saxReader.read(file);
//獲得Document對象的根節點,就是UFIDA-FAHON-WebService節點
ElementrootElement=document.getRootElement();
//list裡面裝的就是你的xml文件根節點的所有子節點,就是所有的U8ArrivalVouch節點
List<Element>list=rootElement.elements();
//增強for循環來遍歷所有的U8ArrivalVouch節點
for(Elementelement:list){
//待處理內容,可以繼續用elements()方法繼續獲得所有的子節點
;
}



}

}
//你的xml文件的最後應該是</UFIDA-FAHON-WebService>才對,這才符合xml規范
<UFIDA-FAHON-WebService>

......

</UFIDA-FAHON-WebService>

❼ 通過java如何操作xml向其節點中添加內容比如<say>想添加的內容</say>

<say>我是個字元串可以隨便填</say>
你是要代碼嗎
InputStream is= this.getClass.getInputStream("my.xml");
在通過 is獲得內容我就說他是 String xml=is....
String str="想添加的內容";
String newxml=xml.replace("我是個字元串可以隨便填",str);

❽ java如何獲取XML中子節點的內容

java中獲取xml節點元素值 根據不同的處理xml方式不同而不同。
java中解析xml的方式:大體可以使用以下四種
------------------------------------------------------------
DOM(Document Object Model)
為 XML 文檔的已解析版本定義了一組介面。解析器讀入整個文檔,
然後構建一個駐留內存的樹結構,然後代碼就可以使用 DOM 介面來操作這個樹結構。
優點:整個文檔樹在內存中,便於操作;支持刪除、修改、重新排列等多種功能;
缺點:將整個文檔調入內存(包括無用的節點),浪費時間和空間;
使用場合:一旦解析了文檔還需多次訪問這些數據;硬體資源充足(內存、CPU)

SAX(Simple API for XML)
為解決DOM的問題,出現了SAX。SAX ,事件驅動。
當解析器發現元素開始、元素結束、文本、文檔的開始或結束等時,發送事件,
程序員編寫響應這些事件的代碼,保存數據。優點:不用事先調入整個文檔,佔用資源少;
SAX解析器代碼比DOM解析器代碼小,適於Applet,下載。
缺點:不是持久的;事件過後,若沒保存數據,那麼數據就丟了;無狀態性;
從事件中只能得到文本,但不知該文本屬於哪個元素;
使用場合:Applet;只需XML文檔的少量內容,很少回頭訪問;機器內存少;

DOM4J
DOM4J 是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,
同時它也是一個開放源代碼的軟體。如今你可以看到越來越多的 Java 軟體都在使用 DOM4J 來讀寫 XML,
特別值得一提的是連 Sun 的 JAXM 也在用 DOM4J

JDOM
為減少DOM、SAX的編碼量,出現了JDOM;優點:20-80原則,極大減少了代碼量。
使用場合:要實現的功能簡單,如解析、創建等,但在底層,JDOM還是使用SAX(最常用)、DOM、Xanan文檔。
------------------------------
參考代碼
dom4j
------------------------------
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
---------------------------------------------
File f = new File("students.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();

for (Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
// System.out.println(element.attributeValue("email"));

String ids=element.elementText("stuId");
System.out.println(ids);
String names=element.elementText("stuName");
System.out.println(names);
String ages=element.elementText("age");
System.out.println(ages);
}
------------------------------------
dom 方式
---------------
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
------------------------

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 允許名字空間
// factory.setNamespaceAware(true);
// 允許驗證
// factory.setValidating(true);
// 獲得DocumentBuilder的一個實例

DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出異常時輸出異常信息,然後退出,下同
System.exit(1);
}

Document doc = null;
// 解析文檔,並獲得一個Document實例。

try {
try {
// InputStream is=new FileInputStream("students.xml");
doc = builder.parse("students.xml");
// doc = builder.parse(is);

} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
// System.exit(1);
}
for (int i = 0; i < nlStudent.getLength(); i++) {

Element elmtStudent = (Element) nlStudent.item(i);
String email = elmtStudent.getAttribute("email");
System.out.println(email);

NodeList ids = elmtStudent.getElementsByTagName("stuId");
Element id = (Element)ids.item(0);
Node tId = id.getFirstChild();
System.out.println(tId.getNodeValue());

NodeList names = elmtStudent.getElementsByTagName("stuName");
Element e = (Element)names.item(0);
Node tName = e.getFirstChild();
System.out.println(tName.getNodeValue());
}

閱讀全文

與java循環xml節點相關的資料

熱點內容
正宗溯源碼大燕條一克一般多少錢 瀏覽:915
電腦感染exe文件夾 瀏覽:914
wpsppt怎麼轉pdf格式 瀏覽:86
騰訊文檔在線編輯怎麼添加密碼 瀏覽:868
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954
Linux定位內存泄露 瀏覽:198
工程加密狗視頻 瀏覽:720
不在內網怎麼連接伺服器 瀏覽:664
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137
交易平台小程序源碼下載 瀏覽:148
程序員記筆記用什麼app免費的 瀏覽:646
java與單片機 瀏覽:897
伺服器內網如何通過公網映射 瀏覽:478
程序員穿越到宋代 瀏覽:624
怎麼使用雲伺服器掛游戲 瀏覽:618
真實的幸福pdf 瀏覽:345
d盤php調用c盤的mysql 瀏覽:267