古詩詞大全網 - 個性簽名 - 如何從下面的xml字符串中提取STATE和ERRORCODE值?

如何從下面的xml字符串中提取STATE和ERRORCODE值?

首先,我們來談談妳的xml問題:

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.操作結果: