XML

js訪問xml之節點對象屬性和方法
2009-02-10 12:23

節點對象屬性
childNodes—返回節點到子節點的節點列表
firstChild—返回節點的首個子節點。
lastChild—返回節點的最後一個子節點。
nextSibling—返回節點之後緊跟的同級節點。
nodeName—返回節點的名字,根據其類型。
nodeType—返回節點的類型。
nodeValue—設置或返回節點的值,根據其類型。
ownerDocument—返回節點的根元素(document對象)。
parentNode—返回節點的父節點。
previousSibling—返回節點之前緊跟的同級節點。
text—返回節點及其後代的文本(IE獨有)。
xml—返回節點及其後代的XML(IE獨有)。

節點對象的方法
appendChild()—向節點的子節點列表的結尾添加新的子節點。
cloneNode()—複製節點。
hasChildNodes()—判斷當前節點是否擁有子節點。
insertBefore()—在指定的子節點前插入新的子節點。
normalize()—合併相鄰的Text節點並刪除空的Text節點。
removeChild()—刪除(並返回)當前節點的指定子節點。
replaceChild()—用新節點替換一個子節點。
IE6獨有方法
selectNodes()—用一個XPath表達式查詢選擇節點。
selectSingleNode()—查找和XPath查詢匹配的一個節點。
transformNode()—使用XSLT把一個節點轉換爲一個字符串。transformNodeToObject()—使用XSLT把一個節點轉換成爲一個文檔。
文章出處:DIY部落(http://www.diybl.com/course/1_web/javascript/Javascriptxl/2008410/109156.html)
Xml讀取文件屬性
2010年02月27日 星期六 14:57

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;

/***********************************************
* XML文件讀寫操作類
* Demo:XmlReadOrWriter
***********************************************/
namespace Demo
{
    public class XmlReadOrWriter
    {
        /// <summary>
        /// xml讀取界面皮膚
        /// </summary>
        public static void ReadThemes(string path)
        {
            //實例化Xml文檔類
            XmlDocument XmlDoc=new XmlDocument();
            //加載Xml皮膚文件
            XmlDoc.Load(path);
            //獲取皮膚文件內容
            XmlNode xmlNode = XmlDoc.SelectSingleNode("mainform");
            //提取皮膚文件名稱或路徑
            Skindb.mainNotTop = Config.startupPath + xmlNode["mainNotTop"].GetAttribute("value");
            Skindb.mainNotCenter = Config.startupPath + xmlNode["mainNotCenter"].GetAttribute("value");
            Skindb.mainNotBotton = Config.startupPath + xmlNode["mainNotBotton"].GetAttribute("value");
            Skindb.mainLoginButtonEnter = Config.startupPath + xmlNode["mainLoginButtonEnter"].GetAttribute("value");
            Skindb.mainLoginButtonLeave = Config.startupPath + xmlNode["mainLoginButtonLeave"].GetAttribute("value");
            Skindb.mainOnlineEnter = Config.startupPath + xmlNode["mainOnlineEnter"].GetAttribute("value");
            Skindb.mainOnlineLeave = Config.startupPath + xmlNode["mainOnlineLeave"].GetAttribute("value");
            Skindb.mainOnlineHR = Config.startupPath + xmlNode["mainOnlineHR"].GetAttribute("value");
        }
    }
}

 

 

XML文件結構

<?xml version="1.0" encoding="utf-8" ?>
<mainform>
<!--********************************未登錄狀態*******************************-->
<!--主面板未登錄狀態頭部-->
<mainNotTop value="/Themes/Default/Image/mainnotlogintop.png"/>
<!--主面板未登錄狀態中間-->
<mainNotCenter value="/Themes/Default/Image/mainnotlogincenter.png"/>
<!--主面板未登錄狀態底部-->
<mainNotBotton value="/Themes/Default/Image/mainnotloginbotton.png"/>
<!--用戶登錄按鈕(鼠標移過按鈕)-->
<mainLoginButtonEnter value="/Themes/Default/Image/mainloginbuttonenter.png"/>
<!--用戶登錄按鈕(鼠標離開按鈕)-->
<mainLoginButtonLeave value="/Themes/Default/Image/mainloginbuttonleave.png"/>
<!--用戶登錄在線菜單(鼠標移過菜單)-->
<mainOnlineEnter value="/Themes/Default/Image/mainonlineenter.png"/>
<!--用戶登錄在線菜單(鼠標離開菜單)-->
<mainOnlineLeave value="/Themes/Default/Image/mainonlineleave.png"/>
<mainOnlineHR value="/Themes/Default/Image/mainOnlineHR.png"/>
</mainform>

xml解析元素節點,屬性信息,子節點的子節點
2010-02-01 11:33


import java.io.StringReader;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class Test {

public void analyticalXML(String xml){
Document doc;
try {
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
.parse(new InputSource(new StringReader(xml)));
Element root = doc.getDocumentElement();

if (0<root.getAttributes().getLength()){
System.out.println("根節點屬性信息..........");
for (int a = 0; a < root.getAttributes().getLength(); a++) {
System.out.println(root.getAttributes().item(a)
.getNodeName()
+ ":" + root.getAttributes().item(a).getNodeName());

}
}
NodeList ConfList = root.getChildNodes();
for (int i = 0; i < ConfList.getLength(); i++) {
Node conf = ConfList.item(i);
// 判斷是不是子節點

if (conf.getNodeType() == Node.ELEMENT_NODE) {
// 獲得子節點的所有屬性名和值

if (0 < conf.getAttributes().getLength()) {
System.out.println("第" + i + "個子節點屬性信息..........");
for (int b = 0; b < conf.getAttributes().getLength(); b++) {
System.out.println(conf.getAttributes().item(b)
.getNodeName()
+ ":"
+ conf.getAttributes().item(b)
.getNodeValue());
}
}
//獲得子節點的子節點

for (int j = 0; j < conf.getChildNodes().getLength(); j++) {
Node conf1 = conf.getChildNodes().item(j);

// 判斷是不是子節點

if (conf1.getNodeType()==Node.ELEMENT_NODE) {
// 獲得子節點的所有屬性名和值

if (0 < conf1.getAttributes().getLength()) {
System.out.println(" 第" + i + "個子節點的第" + j
+ "子節點的屬性信息..........");
for (int b1 = 0; b1 < conf1.getAttributes()
.getLength(); b1++) {
System.out.println(conf1.getAttributes()
.item(b1).getNodeName()
+ ":"
+ conf1.getAttributes().item(b1)
.getNodeValue());
}
}
System.out.println(conf1.getNodeName()+":"+conf1.getFirstChild().getNodeValue());
}                       
}
}               
}
} catch (Exception e) {
e.printStackTrace();
}

}

public static void main(String [] args){
Test t=new Test();
String xml="<?xml version=/"1.0/" encoding=/"UTF-8/"?>" +
"<ConfList>" +
"<conf confid=/"210834/" username=/"admin/" topic=/"遠程測試2/" begintime=/"2010-01-29 11:07:21/" endtime=/"2010-02-01 11:06:00/" content=/"備註/" conftype=/"publicconf/" confshow=/"1/" audiotype=/"5/" maxpersonspeak=/"9/" attendnum=/"30/" driftnum=/"0/"  bandwidth=/"256/" maxvideo=/"24/" encrypt=/"0/"/>" +
"<conf confid=/"253378/" username=/"admin/" topic=/"遠程測試1/" begintime=/"2009-11-27 09:41:44/" endtime=/"2009-12-27 09:41:00/" content=/"備註/" conftype=/"publicconf/" confshow=/"1/" audiotype=/"5/" maxpersonspeak=/"9/" attendnum=/"30/" driftnum=/"0/"  bandwidth=/"256/" maxvideo=/"24/" encrypt=/"0/"/>" +
"</ConfList> ";
t.analyticalXML(xml);
}
 

 

XML文檔對象模型

1)DOMDocument對象:該對象描述全部的文檔映射表,文檔映射表包含了XML文檔裏的所有信息。
   
常用方法
   常用屬性

2)IXMLDOMNode對象:該對象描述XML文檔裏的節點。這個節點可以是元素、屬性、處理指令、文本或者其他存儲在XML文檔裏的信息。
   
常用方法
   常用屬性

3)IXMLDOMNodeList對象:該對象描述IXMLDOMNode對象的集合,並可使用該對象遍歷這個集合。IXMLDOMNodeList對象裏的節點集合可以用數值該問。
   
常用方法
   常用屬性

4)IXMLDOMParseError對象:該對象用來驗證XML文檔對於Schema或DTD的正確性,並且取得在驗證過程中產生的錯誤信息。
   常用方法
   
常用屬性

* DOMDocument對象常用方法
a)createElement(elementName) ---- 該方法以元素名爲參數創建一個用此參數命名的元素節點。(不能創建名稱空間受限制的元素。如果要創建名稱空間受限制的元素,必須使用createNode()方法)
例: doc.createElement("PRODUCT")

b)createAttribute(attributeName) ---- 該方法以屬性名爲參數創建一個用此參數命名的屬性節點。
例: doc.createAttribute("PRODID")

c)createComment(text) ---- 該方法以字符串爲參數創建一個包含此字符串的註釋節點。
例: doc.createComment("This is an XML document")

d)createTextNode(text) ---- 該方法以字符串爲參數創建一個包含指定字符串的正文節點。
例: doc.createTextNode("Sony Workman")

e)createNode(type,name,namespace-URI) ---- 該方法創建元素節點。三個參數,"類型"參數是variant型,既可以是字符串也可以是整型。第二個參數是字符串,它代表將要創建的節點的名字。第三個參數是代表namespace-URI的字符串。如果namespace-URI爲空字符串,則新創建的節點就沒有名稱空間URI
例: doc.createNode("element","PRODUCT","")
     doc.createNode("element","prod: PRODUCT","blog.csdn.net/fcrpg2005")
     doc.createNode(1,"PRODUCT","")

f)getElementsByTagName(elementName) ---- 該方法以字符串爲參數。這個字符串是要搜索的元素。返回IXMLDOMNodeList對象,包含指定元素名稱的節點的集合。可以用這些節點信來瀏覽操縱存儲在指定元素中的值。
例: doc.getEelmentsByTagName("PRICE")

g)load(XMLdocument) ---- 該方法以字符串爲參數。這個字符串是XML文檔的地址(HTTP地址或本地地址)
例: doc.load("
http://blog.csdn.net/fcrpg2005/product.xml")
  doc.load("D:/product.xml")

h)loadXML(string) ---- 該方法把成形的XML代碼或整個XML文檔載入DOMDocument對象中。
例: doc.loadXML("<?xml version=1.0><PRODUCTS><PRODUCT><name>Barbie Doll</name></PRODUCT></PRODUCTS>")

i)transformNode(stylesheet object) ---- 該方法以風格表對象爲參數。通過把相應的風格表加到XML文檔上來處理節點,然後返回轉換結果。
例: doc.transformNode("product.xsl")

j)appendChild(child node) ---- 該方法以對象爲參數。把這個對象作爲最後的子節點加在XML文檔上。createNode() 或者 createElement()方法可以創建節點或元素。但是它們不會把新建的節點加到文檔樹形結構上。而是需要用appendChild()方法,insertBefore()方法,或者replaceChild()方法把新建的節點加上去。
例: doc.appendChild(root) ---- PS: root是一個用createNode()或createElement()方法創建的節點

k)save(destination) ---- 該方法以對象爲參數。這個對象可以是一個DOMDocument對象也可以是一個文件名。save()方法把DOMDocument對象保存在指定的目的地。
例: doc.save("
http://blog.csdn.net/fcrpg2005/product.xml")

* DOMDocument對象常用屬性
a)async ---- 該屬性用來指定是否允許異步加載。屬性async取布爾值。
例: doc.async = false  --同步

b)childNodes ---- 該屬性返回屬於一個父節點的子節點集合(即返回當前元素所有子元素的數組對象)。該屬性的值是對象IXMLDOMNodeList的類型。
例: var firstelem = doc.childNodes.item(1)

c)documentElement ---- 該屬性包含用對象DOMDocument表示的XML文檔的根元素。
例: var root = doc.documentElement

d)firstChild ---- 該屬性返回父元素的第一個子節點。該元素是隻讀的。
例: var firstelem = doc.firstChild

e)lastChild ---- 該屬性返回父元素的最後一個子節點。
例: var lastelem = doc.lastChild

f)parseError ---- 該屬性返回一個包含大部分最近產生的錯誤信息的對象。
例: var error = doc.parseError

g)readyState ---- 該屬性返回XML文檔的狀態。它顯示這個文檔是否已完全載入。4個狀態:0-未初始化、1-正在加載、2-已加載、3-交互中、4-已完成
例: var stateInfo = doc.readState
  if(stateInfo == 4) { // Document loading
   // Coding
  }

h)xml ---- 該屬性返回一個節點以有其子節點的XML表示。
例: document.write(doc.xml)

i)validateOnParse ---- 該屬性指定解析器是否在解析XML文檔時驗證其合法性。
例: doc.validateOnParse = true

** IXMLDOMNode對象常用方法:
a)appendChild(newChild) ---- 該方法把節點newChild加到該方法使用的節點的子節點的末尾。

b)insertBefore(newNode, refNode) ---- 該方法把一個新節點newNode插到一個已存在節點refNode之前。

c)removeChild(nodeName) ---- 該方法刪除指定的節點。

d)replaceChild(newNode, oldNode) ---- 該方法用新節點newNode替換舊節點oldNode。

e)hasChildNodes() ---- 如果IXMLDOMNode對象有子節點,該方法返回值爲真(true)。

f)cloneNode(Boolean) ---- 如果參數Boolean爲真,該方法返回IXMLDOMNode對象一個完全克隆。該克隆節點包含和原節點一樣的子節點。

** IXMLDOMNode對象常用屬性:
a)nodeName ---- 返回節點名稱。

b)nodeType ---- 返回節點類型。

c)nodeValue ---- 返回節點包含的文本。

d)childNodes ---- 返回用IXMLDOMNode對象表示的節點的子節點集。

e)firstChild ---- 返回該節點的第一個子節點。

f)lastChild ---- 返回該節點的最後一個子節點。

g)text ---- 返回IXMLDOMNode在IXMLDOMNode對象中的文本。

h)xml ---- 返回IXMLDOMNode對象的XML代碼

*** IXMLDOMNodeList對象常用方法:
a)item(number) ---- 該方法返回指定數值對應位置的節點。

b)nextNode() ---- 該方法返回節點集的下一個節點。

*** IXMLDOMNodeList對象常用屬性:
length ---- 獲得節點集中節點的個數。

**** IXMLDOMParseError對象常用屬性:
a)errorCode ---- 該屬性包含類型爲長整型的錯誤代碼。如果XML文檔沒有錯誤,該屬性返回0。

b)reason ---- 該屬性包含解釋錯誤原因的字符串。

c)line ---- 該屬性存儲代表錯誤行數的長整型。

d)linePos ---- 該屬性存儲代表錯誤行位置的長整型。

e)srcText ---- 該屬性包含引起錯誤的那一行字符串。 

 

http://dev.csdn.net/author/fcrpg2005/85dd059afb114c9ca19617135fdf551b.html
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章