1.简介
使用****XXX公司传输的ddex.xml文件为例子,解析例子为伪代码,主要是阐述ddex.xml 文件的解析思路和关键文本解释。
2.解析DDEX思路主要是4部分
1.解析MessageHeader解析后
MessageHeader是ddex文件中第一部份,属于消息的头部信息,主要是定义传输者、接收者、
2.解析MessageSender 解析后
3.releaseList 解析后 通过字段的形式,存到各个业务表中
releaseList属于发行相关的领域,而不是ddex本身,更像是一个传输协议。用于解析DDEX文件中的数据转换成
4.dealList 解析后组成json形式存储
dealList是当前这个三个框架中付费信息,歌曲发行的领域是需要的,并且信息中还覆盖到当前的歌曲。
3.解析语言和框架
1.使用解析语言是JAVA语言
2.使用解析框架只要是解析xml的文件就可以,目前项目使用的解析框架是JAVA解析xml老牌框架,dom4j
使用的体验非常好。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader;
public class DDEXParser { public static void main(String[] args) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read("ddex.xml"); Element root = document.getRootElement();
Element messageHeader = root.element("MessageHeader"); MessageHeader header = new MessageHeader(); header.setMessageThreadId(messageHeader.element("MessageThreadId").getText()); header.setMessageId(messageHeader.element("MessageId").getText()); Element messageSender = messageHeader.element("MessageSender"); MessageSender sender = new MessageSender(); sender.setPartyId(messageSender.element("PartyId").getText()); sender.setPartyName(messageSender.element("PartyName").element("FullName").getText()); header.setMessageSender(sender);
Element releaseList = root.element("ReleaseList"); for (Element release : releaseList.elements("Release")) { Release r = new Release(); r.setLanguageAndScriptCode(release.attributeValue("LanguageAndScriptCode")); r.setIsMainRelease(Boolean.parseBoolean(release.attributeValue("IsMainRelease"))); Element releaseId = release.element("ReleaseId"); ReleaseId id = new ReleaseId(); id.setICPN(releaseId.element("ICPN").getText()); id.setProprietaryId(releaseId.element("ProprietaryId").getText()); r.setReleaseId(id);
}
Element dealList = root.element("DealList"); for (Element deal : dealList.elements("Deal")) { Deal d = new Deal(); Element dealTerms = deal.element("DealTerms"); DealTerms terms = new DealTerms(); terms.setCommercialModelType(dealTerms.element("CommercialModelType").getText()); terms.setUseType(dealTerms.element("UseType").getText()); terms.setWholesalePricePerUnit(dealTerms.element("WholesalePricePerUnit").getText()); d.setDealTerms(terms);
} } }
|