1.妳的P標簽沒關,我幫妳關了。
2.我將使用dom4j進行解析,為項目添加依賴項或者自己在線下載jar包:
& lt依賴性& gt
& ltgroupId & gtdom4j & lt/groupId & gt;
& ltartifactId & gtdom4j & lt/artifact id & gt;
& lt版本& gt1 . 6 . 1 & lt;/version & gt;
& lt/dependency & gt;
3.妳要獲取的目標值在最後壹個S標簽的屬性上。當dom4j用於解析時,dom4j需要那個“”符號,否則會報錯:org.dom4j.documentexception:文檔第5行出錯?:與元素類型“s”關聯的“ca_out”的屬性值不能包含“
& lt?xml版本="1.0 "編碼="UTF-8 "?& gt
& ltp & gt
& lts err flag = " 0 "/& gt;
& lts errtext = " "/& gt;
& lts ca _ out = " & amplt;國家與社會。gt;0 & amplt;/STATE & amp;gt;& amplt;錯誤代碼& ampgt;0 & amplt;/錯誤代碼& ampgt;”/& gt;
& lt/p & gt;
4.解析ca_out的屬性後,屬性值為
& ltroot & gt
& ltSTATE & gt0 & lt/STATE & gt;
& lt錯誤代碼& gt0 & lt/error code & gt;
& lt/root & gt;
所以我們可以解析它。
5.代碼如下:
公共類測試{
公共靜態void main(String[] args)引發異常{
String xml = " & lt?xml版本=\"1.0\ "編碼=\"UTF-8\ "?& gt\n" +
“& ltp & gt\n" +
“& lts err flag = \ " 0 \ "/& gt;\n" +
“& lts errtext=\"\"/>\n" +
“& lts ca _ out = \ " & amplt;國家與社會。gt;0 & amplt;/STATE & amp;gt;& amplt;錯誤代碼& ampgt;0 & amplt;/錯誤代碼& ampgt;\ "/>;\n" +
“& lt/p >;;
SAXReader reader = new SAXReader();
document doc = reader . read(new bytearray inputstream(XML . getbytes(" UTF-8 ")));//讀取xml字符串
element root = doc . getrootelement();
列表& lt元素& gtelements = root . elements();
for(元素元素:元素){
attribute attribute = element . attribute(" ca _ out ");//獲取ca_out節點屬性。
如果(屬性!= null) {
string ca _ out value = attribute . getvalue();
System.out.println("ca_out中的ca _ out:"+ca _ out value+" \ n ");
//得到的ca_out不是xml,沒有根節點,先給它加壹個根節點,轉換成標準的xml再處理。
String caOutXml = " & lt根>;"+ca _ out value+" & lt;/root >;
document caout doc = reader . read(new bytearrayiputstream(caout XML . getbytes(" UTF-8 ")));
element caOutRoot = caoutdoc . getrootelement();
列表& lt元素& gtcaout elements = caout root . elements();
for(Element caout Element:caout elements){
system . out . println(caout element . getname()+" = "+caout element . gettext());
}
}
}
}
}
6.操作結果: