XML中元素和節點的區別
XML元素和結點的區別:
1、區別介紹
Element是Node的擴展,所以也更實用一些。例如,用Element可以方便的獲得Node的屬性getAttribute(String attrName)如果用Node,可以得到一個屬性集,還要進一步檢索才可得到想要的屬性。一個結點不一定是一個元素,而一個元素一定是一個結點。
Element是Node的子集,XmlNode表示一個節點,包括XmlElement(元素)和XmlAttribute(屬性)等。 如:
<Alarm lock="true"> //node
<Time> //node
StringValue //node
</Time> //node
</Alarm> //node
以上Alarm(元素節點),lock(屬性節點),Time(元素節點),StringValue(文本節點)都是Node,但是只有 <Alarm>......</Alarm>和<Time>StringValue</Time>是Element
2、具體功能實現
2.1如果我想取得一個Node中的Attribute,那該怎么實現呢? 即:
<root>
<data id=data1 name=mydata></data>
</root>
怎樣將data中的 id,name及其值取出來?
問題解釋
兩種方式:
1.先取得node
String strID = node.getAttributes().getNamedItem("id").getNodeValue();
String strName = node.getAttributes().getNamedItem("name").getNodeValue();
2.先取得element
String strID = element.getAttribute("id");
String strName = element.getAttribute("name");
2.2、我想使用一個通用的方法,將一個Element中的所有屬性取出來!但事先我不知道該Element有多少個屬性,並且不知道每個屬性的name是什么!
問題解釋
先取得node
NamedNodeMap nnm = node.getAttributes();
for(int i=0 ; i<nnm.getLength() ; i++)
{
System.out.println(nnm.item(i).getNodeName());
System.out.println(nnm.item(i).getNodeValue());
}
1.元素(Element)和結點(Node)的區別,元素是一個小范圍的定義,必須是含有完整信息的結點才是一個元素,例如<div>...</div>。但是一個結點不一定是一個元素,而一個元素一定是一個結點。
什么是node:
NODE是相對TREE這種數據結構而言的。TREE就是由NODE組成。這個部分你可以參考離散數學的樹圖。
什么是element
ELEMENT則是XML里的概念,<xxx>就是元素,是XML中的數據的組成部分之一。
素(Element)和結點(Node)的區別,元素是一個小范圍的定義,必須是含有完整信息的結點才是一個元素,例如<div>...</div>。但是一個結點不一定是一個元素,而一個元素一定是一個結點。
<a>
<b> </b>
<b> </b>
<a>
DOM將文檔中的所有都看作節點 node>element
1DOM在解析文檔的時候按整個文檔的結構生成一棵樹,全部保存在內存
優點就是整個文檔都一直在內存中,我們可以隨時訪問任何節點,並且對樹的遍歷也是比較熟悉的操作;缺點則是耗內存,並且必須等到所有的文檔都讀入內存才能進行處理。
2一個需要注意的地方就是,XML文檔兩個標簽之間的空白也是這棵樹的一個節點(Text節點)。 <a> <b></b> <a> a有三個節點
Element root = doc.getDocumentElement();:root是什么????
NodeList list = root.getChildNodes(); root 到底是節點還是元素我不清楚?????
node有幾個子類型:
Element,
Text,
Attribute,
RootElement,
Comment,
Namespace等
Element是可以有屬性和子節點的node。
Element是從Node繼承的
//轉換
if (node.getNodeType() == Element.ELEMENT_NODE)
{
Element e = (Element) node;
}
?元素有孩子嗎
elemen et 性質
1 e.getAttributes()
2 e.getChildNodes()
3 e.getTagName()
