用java解析获得xml中的值

<MdmRecords><RecordrecordId="R546446"><FieldisMultiValue="0"><Name>TradeNo</Name><Val... <MdmRecords>
<Record recordId="R546446">
<Field isMultiValue="0">
<Name>TradeNo</Name>
<Value>1001000082</Value>
</Field>
<Field isMultiValue="0">
<Name>TradeSort</Name>
<Value>03 既是客户又是供应商</Value>
</Field>
<Field isMultiValue="0">
<Name>Name1</Name>
<Value>ZYM-2009流程</Value>
</Field>
<Field isMultiValue="0">
<Name>Name3</Name>
<Value>ZZ</Value>
</Field>
<Field isMultiValue="0">
<Name>SearchField</Name>
<Value>4324</Value>
</Field>
<Field isMultiValue="0">
<Name>CNMnemocode</Name>
<Value>23423</Value>
</Field>
<Field isMultiValue="0">
<Name>Street1</Name>
<Value>不过</Value>
</Field>
<Field isMultiValue="0">
<Name>City</Name>
<Value>北京市</Value>
</Field>
<Field isMultiValue="1">
<Name>tblMasterData_Publish_Vendor</Name>
<Value>
<LookupRecord>
<Field isMultiValue="0">
<Name>SystemID</Name>
<Value>220CDF, 工程建设ERP开发系统(2.0)</Value>
</Field>
</LookupRecord>
</Value>
</Field>
<Field isMultiValue="1">
<Name>tblMasterData_Publish_Customer</Name>
<Value>
<LookupRecord>
<Field isMultiValue="0">
<Name>SystemID</Name>
<Value>220CDF, 工程建设ERP开发系统(2.0)</Value>
</Field>
</LookupRecord>
</Value>
</Field>
<Field isMultiValue="0">
<Name>C_OIL_CATE1</Name>
<Value>[Null]</Value>
</Field>
</Record>
</MdmRecords>

如上xml,我要遍历获得每一个Field文件里的name值以及对应的value。应该怎么办 最好用dom4j
展开
 我来答
匿名用户
2015-09-08
展开全部
import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test {

        public static void main(String[] args) {
            File file = new File("d:\\Test.xml");
            SAXReader reader = new SAXReader();
            Document doc = null;
            try {
                doc = reader.read(file);
            }
            catch(DocumentException e) {
             e.printStackTrace();
            }
            Element root = doc.getRootElement();
            List<Element> records = root.elements("Record");
            for(Element record : records) {
             List<Element> fields = record.elements("Field");
             for(Element field : fields) {
                 parseFieldElement(field);
                }
            }
        }

        public static void parseFieldElement(Element e) {
         System.out.println(e.elementText("Name"));
         if(Integer.parseInt(e.attribute("isMultiValue").getValue()) == 1) {
     List<Element> fields = e.element("Value").element("LookupRecord").elements("Field");
     for(Element field : fields) {
     parseFieldElement(field);
     }
         }
         else {
         System.out.println(e.elementText("Value"));
         }
        }
        
}
6fone
2015-09-08 · TA获得超过804个赞
知道小有建树答主
回答量:631
采纳率:33%
帮助的人:529万
展开全部

xpath搜索xml,比如

public void findNames(Document document) throws DocumentException {
        List list = document.selectNodes( "//Field/Name" );
        for (Iterator iter = list.iterator(); iter.hasNext(); ) {
            Attribute attribute = (Attribute) iter.next();
            String name = attribute.getValue();
            
        }
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式