我有一个表(right-to-left
),它包含用于xml的1列(<bdi>
)。
因此,如果REQUESTS
在此表中有一行,则应获取相应的xml。
如果检索到xml,则需要获取带有标签XML_DATA
的所有值。
这是我到目前为止所拥有的:
ID=123
现在,如果有多个<Mobile>0918xxxx</Mobile>
,
我需要使用for循环将其存储在数组中。
如何在数组中存储strMob的多个值?
存储所有可能的strMob之后,我打算将值分配给其他地方,例如:for (int i = 0; i < RqeuestsDBViewData.length; i++) //GETS ROWS FROM TABLE REQUESTS
{
xmlDetails = test.getDetailsFromXML(mCustUtils, RequestDBViewData[i]); //GETS XML FROM XML_DATA
String strXmlDetails;
String strMob;
if (!AppUtils.isEmpty(xmlDetails)) //IF IT HAS ROW, THEN GET RECORD FROM <MOBILE></MOBILE> TAG
{
strXmlDetails = xmlDetails.toString(); //ENTIRE XML
strMob = StringUtils.substringBetween(strXmlDetails, "<Mobile>", "</Mobile>"); //GETS MOBILE VALUE
}
有关如何执行此操作的任何建议?
答案 0 :(得分:0)
使用适当的XML工具读取XML。
变体1
使用Jackson来parse your XML to a prepared Java object。这也适用于数组。
变体2
将XML读取到DOM对象
public static Element getDocument(String xmlString) {
return getDocument(new ByteArrayInputStream(xmlString.getBytes()));
}
public static Element getDocument(InputStream inputStream) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(new BufferedInputStream(inputStream));
Element root = doc.getDocumentElement();
root.normalize();
return root;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
以XPATH为目标,您可以提取<Mobile>
元素。查看此答案:Extract content between XML tags