/**
* 读取菜单
* @param paramNode
* @param menu
*/
private void readChildNode(Node paramNode, MenuBean menu)
{
//如果该节点有子点节,则继续迭代读取子节点
if(paramNode.hasChildNodes())
{
//如果该父节点有属性且不是主菜单,则是二级菜单
if(paramNode.hasAttributes() && !paramNode.getNodeName().equals("MainMenu"))
{
//新建一个二级菜单
MenuBean item = new MenuBean();
//设置菜单属性
setMenuParam(paramNode.getAttributes(), item);
//加入主菜单
menu.getItemMenu().add(item);
//将要传给子菜单的主菜单设置为本二级菜单
menu = item;
}
//迭代找出子菜单
NodeList childNode = paramNode.getChildNodes();
for(int i = 0; i < childNode.getLength(); i++)
{
readChildNode(childNode.item(i), menu);
}
}
else
{
//如果该节点没有子节点,且有属性,则新建一个子菜单存入父菜单
MenuBean item = new MenuBean();
NamedNodeMap nodeMap = paramNode.getAttributes();
//如果属性为空,则返回
if(nodeMap == null)return;
//设置菜单属性
setMenuParam(nodeMap, item);
menu.getItemMenu().add(item);
}
}
/**
* 设置菜单属性
* @param nodeMap 节点属性
* @param item 菜单
*/
private void setMenuParam(NamedNodeMap nodeMap, MenuBean item)
{
//迭代所有属性
for(int i = 0; i < nodeMap.getLength(); i++)
{
Node itemNode = nodeMap.item(i);
String name = itemNode.getNodeName();
String value = itemNode.getNodeValue();
//设置属性到菜单bean
try
{
Field field = item.getClass().getDeclaredField(name);
field.setAccessible(true);
field.set(item, value);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException
{
XmlUtil xml = new XmlUtil("menu.xml");
List<MenuBean> mainMenu = xml.getMenu();
}
分享到:
相关推荐
Java操作XML工具类XmlUtil详解 Java操作XML工具类XmlUtil是Java中一个非常重要的工具类,它提供了许多实用的方法来操作XML文件。在本文中,我们将详细介绍XmlUtil的使用方法和实现原理,希望能够为大家提供有价值的...
xml2bean
2. **XML到对象的反序列化**:同样,XMLUtil也能解析XML字符串并将其转换为对应的Java对象实例。这使得开发者可以从XML文件中加载配置信息或数据,无需手动解析XML文档。 3. **映射配置**:XMLUtil允许开发者定义...
2. JavaBean转XML: JavaBean转XML的过程与XML转JavaBean相反。首先,创建一个JAXBContext对象,然后获取Marshaller实例。通过调用Marshaller的marshal()方法,我们可以将JavaBean对象转换为XML字符串或者写入XML...
根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ...
2. 创建解析器工厂: 使用`DocumentBuilderFactory`创建一个解析器工厂实例,然后通过`newDocumentBuilder()`方法获取DOM解析器。 ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance...
至于压缩包中的"Ibaitis_Oracle10_XmlUtil.java"文件,虽然没有具体的内容,但我们可以推测这可能是一个与Oracle数据库配合使用的MyBatis工具类,用于处理XML相关的操作,比如动态生成XML配置文件或者解析XML数据。...
2. 加载XML文件:使用`XDocument.Load()`方法从磁盘加载XML文件,例如`var doc = XDocument.Load("path_to_xml_file.xml");` 3. 查询XML数据:`XDocument`提供了丰富的查询API,如`Descendants()`、`Elements()`和`...
2. **XML(Extensible Markup Language)**: - XML是一种标记语言,用于存储和传输结构化数据。它以易于人类阅读和机器解析的方式描述数据。 - XML的结构化特性使得它在Web服务、配置文件、数据交换等方面广泛...
在提供的压缩包"xml-parser-class.zip"中,包含了一些C++实现的XML解析器相关文件,如BTXmlParser.cpp、XMLFileEx.cpp、XmlUtil.cpp,以及对应的头文件BTXmlParser.h、XMLFileEx.h和xmlutil.h。这些文件很可能是为了...
XMLStreamReader reader = factory.createXMLStreamReader(new FileInputStream("path_to_xml_file.xml")); while (reader.hasNext()) { int event = reader.next(); switch (event) { case XMLStreamConstants....
2. **XML到对象的转换**:在Java中,可以通过JAXB(Java Architecture for XML Binding)或者自定义解析方法实现XML到对象的转换。JAXB是Java标准,能够自动将XML映射到Java类,反之亦然。而使用JDOM则需要手动编写...
2. **访问XML节点**:Groovy的XML支持使得可以通过一种直观的方式访问和操作节点。例如,你可以直接通过节点名来访问它们: ```groovy def node = xml.node println node.text() // 输出 "text" ``` 3. **修改...
`XmlUtil.h`可能包含了一些XML处理的辅助函数,比如检查XML格式的合法性、格式化XML字符串等。`XmlNotify.h`则可能是定义了在处理XML过程中的一些通知事件,比如解析错误或节点变化。 在实际应用中,VC++开发者通常...
2. **对象到XML转换**: 要将对象转换为XML,首先需要创建一个对象实例,然后使用XmlSerializer的Serialize方法将其转换为XML字符串或写入XML文件。例如,我们创建一个Person对象实例并序列化为XML: ```csharp ...
XmlUtils JS操作XML工具类 ** * 加载xml文件,参数: * @param {string} xmlPath:加载的xml文件路径; * @return {Object} true 正常加载; false 加载失败 *
节点创建;Map(带List节点)转换为xml; xml文档转换为String;xml字符串转换为Map
Flex网上书店 运行时 的 XMLUtil.class
def parse_xml(file_path) xml_data = File.read(file_path) doc = Nokogiri::XML(xml_data) # 使用XPath查找特定元素 root_element = doc.xpath('//root') # 使用CSS选择器 specific_node = doc.css('node...