【XML】建模

本文介绍了建模的由来、优点和思路。建模是将指定的xml字符串当作对象操作,完成建模后调用指定方法可获取预定字符串。思路包括分析对象、明确行为属性、定义对象和用工厂模式解析xml。还提及XML建模的相关类,建模分两步,可提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建模的简介与思路

建模的由来:就是将指定的xml字符串当作对象来操作

建模的优点:如果说当对一个指定的xml格式字符串完成了建模操作,只需要调用指定的方法就可以完成预定的字符串获取。

建模的思路
1、分析需要被建模的文件中有那几个对象
2、每个对象拥有的行为以及属性
3、定义对象从小到大(从里到外)
4、通过23种的设计模式中的工厂模式,解析xml生产出指定对象

好处:提高代码的复用性

XML建模
ConfigModel类

package com.zking.xml.mode;

import java.util.HashMap;
import java.util.Map;

public class ConfigModel {
	private Map<String, ActionModel> acMap = new HashMap<>();
	public void push(ActionModel actionModel) {
		acMap.put(actionModel.getPath(), actionModel);
	}
	public ActionModel pop(String path) {
		return acMap.get(path);
	}
	public static void main(String[] args) {
		ConfigModel configModel  = new ConfigModel();	//null a null
		ActionModel a = configModel.pop("/LoginAction");
	}
}

ActionModel类

package com.zking.xml.mode;

import java.util.HashMap;
import java.util.Map;

public class ActionModel {
//	<action path="/LoginAction" type="test.action.LoginAction">
	private String path;
	private String type;
	private Map<String, ForwardModel> fMap = new HashMap<>();
	public String getPath() {
		return path;
	}
	public void setPath(String path) {
		this.path = path;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public void pash(ForwardModel forwarModel) {
		fMap.put(forwarModel.getName(), forwarModel);
	}
	public ForwardModel pop(String name) {
		return fMap.get(name);
	}
}

ForwardModel类

package com.zking.xml.mode;

public class ForwardModel {
//	<forward name="a" path="/index.jsp" redirect="false" />
	private String name;
	private String path;
	private boolean redirect;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPath() {
		return path;
	}
	public void setPath(String path) {
		this.path = path;
	}
	public boolean isRedirect() {
		return redirect;
	}
	public void setRedirect(boolean redirect) {
		this.redirect = redirect;
	}
}

ConfigModelFactory类

package com.zking.xml.mode;

import java.io.InputStream;
import java.util.List;


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

public class ConfigModelFatory {
	public static ConfigModel build() throws Exception {
		return build("config.xml");
	}

	private static ConfigModel build(String xmlPath) throws Exception {
		ConfigModel configModel = new ConfigModel();
		InputStream in = ConfigModelFatory.class.getResourceAsStream(xmlPath);
		SAXReader saxReader = new SAXReader();
		Document doc = saxReader.read(in);
		ActionModel actionModel  = null;
		ForwardModel forwardModel = null;
		List<Element> actionEles = doc.selectNodes("/config/action");
		for (Element actionEle : actionEles) {
			actionModel = new ActionModel();
			//接下来需要往actionModel中填充内容
			actionModel.setPath(actionEle.attributeValue("path"));
			actionModel.setType(actionEle.attributeValue("type"));
			List<Element> forwardEles = actionEle.selectNodes("forward");
			for (Element  forwardEle: forwardEles) {
				forwardModel = new ForwardModel();
				//接下来需要往forwardModel中填充内容
				forwardModel.setName(forwardEle.attributeValue("name"));
				forwardModel.setPath(forwardEle.attributeValue("path"));
				forwardModel.setRedirect(!"false".equals(forwardEle.attributeValue("redirect")));
				actionModel.pash(forwardModel);
			}
			configModel.push(actionModel);
		}
		return configModel;
	}
	public static void main(String[] args) throws Exception {
		ConfigModel configModel = ConfigModelFatory.build();
		ActionModel actionModel = configModel.pop("/LoginAction");
		System.out.println(actionModel.getType());
		ForwardModel forwardModel  = actionModel.pop("b");
		System.out.println(forwardModel.getName() + "  " + forwardModel.isRedirect());
	}
}

输出后
在这里插入图片描述
:属性为String类型,子元素标签则是map的值,子元素标签的唯一标识则为map的值
建模分两步
1、以面向对象的编程思想,描述xml资源文件
2、将xml文件中内容封装进model实体对象。

想要了解更多,私信博主。

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在C#开发中,Windows Media Player控件是集成音频和视频播放功能的强大工具。本文将介绍如何在C#中实现不同的播放模式,如随机播放、列表循环和单曲循环,这些功能在多媒体应用中十分常见 。 要使用Windows Media Player控件,首先需要将其添加到C#项目中。在Visual Studio中,可以通过在工具箱中搜索“Windows Media Player”,并将其拖放到窗体上完成 。接着,设置控件的基本属性,如URL,以指定要播放的媒体文件 。 随机播放模式会在一首歌曲播放结束后,随机选择播放列表中的下一首歌曲。可以通过创建一个包含所有歌曲URL的数组,并利用Random类生成随机索引来实现。例如: 列表循环模式会在一首歌曲播放结束后,自动从播放列表的开头重新开始播放。实现方法是检测到播放结束后,将URL重置为列表的第一个元素: 单曲循环模式则是在一首歌曲播放结束后,重新播放当前歌曲。可以通过将播放器的当前播放位置重置为0并重新播放来实现: 以上代码均需在windowsMediaPlayer1_PlayStateChange事件处理器中实现,该事件会在播放器的播放状态改变时触发 。需要注意的是,这些示例假设已正确引用了WMPLib命名空间,并且Windows Media Player控件的ID为“windowsMediaPlayer” 。 在实际应用中,除了实现播放模式外,还可能需要考虑错误处理、用户界面更新等因素。为了使播放列表更具动态性,可以考虑从数据库或XML文件加载歌曲信息,而不是硬编码在代码中,从而提升用户体验 。通过这些方法,可以在C#中灵活实现Windows Media Player的各种播放模式,满足不同多媒体应用场景的需求 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值