-
如何通过递归生成xml树,求解0
想了好久都没想到,现在有个需求,有一个树型结构的表,需要将它生成XML树
结构如下:<treeElement id="13eb1d48892436e0489e98645ca9ee5e" text="引用属性模板" property="" childs="0" level="1"> <treeElement id="13f3b5b3cdce7a5798c09c448d391890" text="Hello kity" property="" childs="0" level="1_1"></treeElement> </treeElement> <treeElement id="13ec5963c069440ec83b74748efad403" text="带有动态属性的分类" property="" childs="5" level="2"> <treeElement id="13f3b3599447f99b522e3434ab4b72b6" text="最后一个子类" property="" childs="0" level="2_1"></treeElement> <treeElement id="13f3b59a742502a8ba3688a480db0473" text="带有属性的第二个分类" property="" childs="0"> <treeElement id="13f3b5af75ff9c2e1cfafbe436dbaa1f" text="Hello 第三层" property="" childs="0" level="2_1_1"> </treeElement> </treeElement> <treeElement id="13f3b5b9100f7d9f9ba667e447d8f9b2" text="真是不好测试啊" property="" childs="0" level="2_2"></treeElement> </treeElement>
我是先查出顶层元素,然后用递归,依次找出每个元素的子元素,我现在是不知道怎么控制关闭节点,层级有时候控制的也有点乱,其中还有一个level节点,需要用数字代表层次关系,需要带格式(空格间距)
我把一些没用的删掉了,这是我写的大概的代码,但是没有不能实现我想要的效果private void fetchData(String fdCategoryId, String authAreaId, String relateLevel, int startLevel) throws Exception { List<CategoryModel> categoryList = this .getCategoryList(fdCategoryId, authAreaId); if (categoryList != null && !categoryList.isEmpty()) { for (int i = 0; i < categoryList.size(); i++) { private void fetchData(String fdCategoryId, String authAreaId, String relateLevel, int startLevel) throws Exception { List<CategoryModel> categoryList = this .getCategoryList(fdCategoryId, authAreaId); if (categoryList != null && !categoryList.isEmpty()) { for (int i = 0; i < categoryList.size(); i++) { CategoryModel template = categoryList.get(i); System.out.println(template.getFdName()); // 如果是顶层节点 if (template.getFdParent() == null) { relateLevel = String.valueOf(i); } else { // 如果存在子节点 if (i - 1 < 0) { relateLevel = getRalateLevel(relateLevel, i); // 如果是同一级别節點 } else { // 兄弟节点则+1 relateLevel = calculateRalateIndex(relateLevel, i); } } Integer docAmount = getDocAmount(template, authAreaId); XmlBody entity = buildEntity(relateLevel, startLevel, template, docAmount); buildXmlPart(relateLevel, startLevel, entity, isEnd); fetchData(template.getFdId(), authAreaId, relateLevel, startLevel); } } else { hasBrotherNode = true; } private String getRalateLevel(String relateLevel, int index) { StringBuilder builder = new StringBuilder(relateLevel); builder.append("_"); builder.append(index); return builder.toString(); } /** * 计算父子关系的索引 * * @param ralateLevel * @param index * @return String */ private String calculateRalateIndex(String ralateLevel, int index) { StringBuilder builder = new StringBuilder(ralateLevel); int lastIndex = ralateLevel.lastIndexOf("_") + 1; builder.replace(lastIndex, ralateLevel.length(), String.valueOf(index)); return builder.toString(); }
代码存在问题,尤其是级别回退,比如当到了1_1_1下面没自己点要退回到1_1,然后兄弟节点就是1_2这种,关闭标签也有问题,放在else去关闭,也会存在问题,大家帮帮我,看看该怎么改正一下,才能实现那个功能,也能兼容所任何层次的情况!2013年6月13日 20:42
目前还没有答案
相关推荐
- Altium Designer 2017 ActiveRoute使用以及其他技巧
- 解决org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:framework:compileDebugJav
- An internal error occurred during: "Add Deployment".
- Oh no, an error occurred. 终极解决方案
- Error occurred during connect to primary: exception 3000301: Connection could not be established
相关推荐
在这个“计算求解数独Android”项目中,我们可以探索如何在Android平台上开发一个能够生成、编辑并解决数独谜题的应用。 首先,我们需要理解Android应用开发的基础,这通常涉及到Java或Kotlin编程语言。在Java中,...
生成算法可以采用回溯法或者基于递归的深度优先搜索(DFS)策略。在DFS中,算法会尝试填充空格,如果在某个步骤中发现不合法的配置(即重复的数字在同一行、列或九宫格内),则回溯到上一步,尝试下一个可能的数字。...
在树的遍历中,回溯法可以通过递归的方式实现,当遇到无法继续前进的情况时,会退回到上一步重新选择路径。 ### 树的计数 树的计数是指计算给定条件下所有可能的树的数量。这在分析算法复杂度以及解决组合数学问题...
3. **图算法**:包括最短路径算法(Dijkstra、Floyd-Warshall)、拓扑排序、最小生成树(Prim、Kruskal)等。 4. **动态规划**:讲述动态规划的基本思想,如背包问题、最长公共子序列、矩阵链乘法等经典问题的解决...
Maze Generator是一个JavaFX应用程序,可以生成任何大小的矩形迷宫并进行求解。 迷宫算法 递归回溯器 普里姆算法 威尔逊算法 解决算法 特雷莫 一种* 广度优先搜索 例子 执行 使用Maven构建和运行项目。 打开终端并CD...
15. **数据解析与序列化**:JSON、XML、CSV等数据格式的解析和生成,以及pickle模块的使用。 通过《剑指Offer》的66道编程题,你将有机会全面深入地学习和实践以上知识,不断提升Python编程技能,为面试和实际工作...
- **应用场景**:适用于某些特定类型的问题,如最小生成树问题。 ##### 11. 分治算法策略 - **定义**:将一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解。 - **应用场景**:...
在数据结构中,序列通常由数组或链表表示,而这些序列的生成可能涉及到递归或动态规划等算法。 2. **Test**: 这可能是测试用例或测试框架,用于验证数据结构实现的正确性。在C++中,可以使用诸如Google Test这样的...
9. 数独算法:实现一个数独游戏需要理解并编写相应的算法,包括生成合法的数独谜题、检查输入的合法性、求解数独等。这些算法可能基于回溯法、递归或其他高效的策略。 通过学习和分析这个数独HTML5游戏源码,开发者...
Prim算法是求解图的最小生成树的算法,每次从已选节点中找到与未选节点之间最短边,将其添加到最小生成树中。 16. **Cache和Buffer**: Cache是硬件层面的高速缓存,用于存储CPU常用数据以提高访问速度;Buffer是...
- **数独解决算法**:可以采用回溯法、递归或者更高效的算法来生成和验证数独谜题。 - **错误检查**:检测玩家输入是否符合规则,如行列和宫格内的数字重复。 5. **用户交互**: - **触摸事件处理**:监听用户的...
这个项目的核心在于利用JavaScript的动态特性来创建和操作复杂的二维数组,代表迷宫的结构,并通过算法来生成、解决以及可视化迷宫。 1. **JavaScript基础**:该项目的基础是JavaScript,一种广泛用于网页和网络...
这通常涉及到二维数组来存储数独盘面,以及高效的回溯法或递归深度优先搜索算法来生成和求解题目。 3. **用户界面**:UI设计采用了Android的布局组件,如LinearLayout、RelativeLayout和GridLayout,结合自定义View...
2.19 实现一个简单的递归下降分析器:提供了递归下降分析器的基本实现方法。 2.20 字节字符串上的字符串操作:讲解了如何对字节字符串执行常见的字符串操作。 **第三章:数字日期和时间** 3.1 数字的四舍五入:...
4. **数值计算**:MATLAB提供了大量内置函数用于数值计算,如数值积分、微分方程求解、最优化问题、线性代数运算等。 5. **图形绘制**:MATLAB可以生成各种类型的图表,包括二维和三维图形、统计图表、信号处理图等...
6. Kruskal's算法或Prim's算法:最小生成树算法,用于找到连接所有顶点的边权重最小的子集。 这些算法的实现通常涉及到队列、栈、优先队列(堆)等数据结构,以及递归、动态规划和贪心策略等编程技巧。通过这个项目...
在C#中,可以使用XML注释为API生成文档。 10. **版本控制**:项目管理通常涉及版本控制工具,如Git,用于追踪代码更改,协作开发,并确保代码的安全。 以上就是基于C#的"polynom-calc"应用所涵盖的一些关键技术点...
12.3求解一元二次方程示例 278 12.4小结 279 第13章XML应用基础 280 13.1了解XML 280 13.2处理XML数据 283 13.2.1初始化XML对象 283 13.2.2访问与遍历 285 13.3XML对象 288 13.3.1XML对象的数据处理方式 288 13.3.2...