最近接手乙個專案的三期改造,**是外包公司編寫,交由我方先做第三期改造,看到專案中有用到自定義的" .dtd "檔案,以前沒見過,做了一下總結
1.專案中乙個".dtd"檔案demo 檔名cache-dict.dtd
<?xmlversion
="1.0"
encoding
="utf-8"
?>
dicts
(dict*)>
dict
(from,key,val)>
dict
idid
#required
orgright
(none|id|no) "none"
>
from
(#pcdata)>
from
name
(exeid) "exeid"
>
key(#pcdata)>
val(#pcdata)>
valseparator
cdata
"-">
<?
xml version
="1.0"
encoding
="utf-8"
?>
dicts
system
"../../dtd/cache-dict.dtd"
>
<
dicts
>
<
dict
id="a"
>
<
from
name
="exeid"
>zhao
from
>
<
key>value
key>
<
val>text
val>
dict
>
<
dict
id="b"
>
<
from
name
="exeid"
>qian
from
>
<
key>value
key>
<
val>text
val>
dict
>
<
dict
id="c"
>
<
from
name
="exeid"
>sun
from
>
<
key>value
key>
<
val>text
val>
dict
>
<
dict
id="d"
>
<
from
name
="exeid"
>li
from
>
<
key>value
key>
<
val>text
val>
dict
>
dicts
>
?=0次或者1次,+=一次或者多次,*=0次或者多次
2.讀取xml文件
import// 讀取xml檔案的方法org.dom4j.document;
import org.dom4j.documentexception;
import org.dom4j.element;
import org.dom4j.io.saxreader;
saxreader saxreader = new saxreader();document doc = saxreader.read(f);// f為 file file = new file(「xml文件路徑」)element root = doc.getrootelement();// 獲取 .dtd 文件中定義的屬性的元素
if(root != null) }}}}
}
3.dtd中的定義規則
必須列出所有節點,乙個都不能少
1)元素
"*"星號 表示可以出現0-n次
"+"加號 表示可以出現1-n次
"|" 表示或(只能出現乙個)
如(phone|mobile)表示固話或手機二選一
"?"問號: 表示出現0或1此
#pcdata 表示字串
2)屬性:
定義在開始標記中的鍵值對
dtd 規則_屬性
1)
XML元素定義(標籤)以及解析
其實就是裡面的標籤,括起來的都叫元素 成對出現。如下 文件宣告下來的第乙個元素叫做根元素 根標籤 標籤裡面可以巢狀標籤 空標籤既是開始也是結束。一般配合屬性來用。張三標籤可以自定義。xml 命名規則 xml 元素必須遵循以下命名規則 名稱可以含字母 數字以及其他的字元 名稱不能以數字或者標點符號開始...
XML的解析與編寫
1導入庫import xml.etree.elementtree as et2例項化物件tree et.elementtree tree.parse test.xml root tree.getroot 獲取所有節點 root.tag 該節點的標籤 root 0 tag 該節點第乙個子節點的標籤 r...
XML檔案的解析和json的解析
解析就是從事先規定好的格式中提取資料 xml的解析方式有兩種 sax解析 dcm解析 安卓有乙個pull sax解析 nsstring path nsbundle mainbundle pathforresource message oftype txt nsdata data nsdata dat...