父节点_子节点_孙节点创建

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

//下面两个命名空间需要添加
using System.IO;
using System.Xml;

namespace CheckXML
{
public partial class Form1 : Form
{
string path;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

XmlDocument XmlDoc = new XmlDocument();

XmlDeclaration xmldecl;
//
加载编码否则出现乱码现象

xmldecl = XmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlDoc.AppendChild(xmldecl);

XmlElement XmlE = XmlDoc.CreateElement("Father");
XmlE.SetAttribute("Name", "
父亲
");
XmlDoc.AppendChild(XmlE);

//创建具有父--孙的一个Xml文档形式,子节点数由外部textBox1输入,孙结点外部textBox2输入
for (int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
{
XmlElement XmlEE = XmlDoc.CreateElement("Son" + i.ToString());
XmlEE.SetAttribute("Name" + i.ToString(), "
儿子" + i.ToString());
XmlE.AppendChild(XmlEE);
for (int k = 0; k < Convert.ToInt32(textBox2.Text); k++)
{
XmlElement XmlEEE = XmlDoc.CreateElement("Son" + i.ToString() + k.ToString());
XmlEEE.SetAttribute("Name" + i.ToString(), "
孙子
" + i.ToString());
XmlEE.AppendChild(XmlEEE);
}
}
XmlDoc.Save(path);
}

private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
richTextBox1.LoadFile(path, RichTextBoxStreamType.PlainText);
}

private void Form1_Load(object sender, EventArgs e)
{
//
设置xml文件的产生及保存路径

path = Application.StartupPath + "//Excise.xml";

//xml文件不存在时则创建
if (!File.Exists(path))
{
File.Create(path);
}
else
{
//
存在的时候直接加载其中的内容
richTextBox1.LoadFile(path, RichTextBoxStreamType.PlainText);


下面几行为删除欲操作xml文件的所有内容,之所以先显示后删除时为了创建后对比的需要
XmlDocument XmlDoc = new XmlDocument();
//
将欲操作xml文档实体加载到xml类中
XmlDoc.Load(path);
//
移除其中的所有内容
XmlDoc.RemoveAll();

//
为了避免报错,载入一个子节点,和文档属性
XmlDeclaration xmlDer = XmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlDoc.AppendChild(xmlDer);
XmlElement XmlE = XmlDoc.CreateElement("Noting");
XmlDoc.AppendChild(XmlE);
//
返回保存
XmlDoc.Save(path);
}
}
}
}

界面如下:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设有一个对象数组 `Node[] nodes`,每个节点对象有一个 `parentId` 属性表示父节点 id,现在需要根据父子关系筛选出所有的父节点子节点。可以按照以下步骤实现: 1. 首先创建两个空的列表,分别存储父节点子节点。`List<Node> parents = new ArrayList<>();` `List<Node> children = new ArrayList<>();` 2. 遍历节点数组,如果节点的 `parentId` 为空,即为根节点,将其加入父节点列表。否则,将其加入子节点列表。`for (Node node : nodes) {if (node.getParentId() == null) {parents.add(node);} else {children.add(node);}}` 3. 遍历子节点列表,将每个子节点父节点加入父节点列表,如果该父节点已经在列表中,则不加入。`for (Node child : children) {Node parent = findParent(child, nodes);if (parent != null && !parents.contains(parent)) {parents.add(parent);}}` 4. 定义一个辅助方法 `findParent(Node child, Node[] nodes)`,用于查找子节点父节点。在节点数组中查找 `parentId` 与子节点的 `id` 相等的节点并返回。如果找不到,则返回 null。 5. 最终得到的父节点列表即为所有的根节点子节点列表即为所有的叶子节点。 下面是完整的代码示例: ```java List<Node> parents = new ArrayList<>(); List<Node> children = new ArrayList<>(); // 遍历节点数组,将节点分为父节点子节点 for (Node node : nodes) { if (node.getParentId() == null) { parents.add(node); } else { children.add(node); } } // 遍历子节点列表,将每个子节点父节点加入父节点列表 for (Node child : children) { Node parent = findParent(child, nodes); if (parent != null && !parents.contains(parent)) { parents.add(parent); } } // 查找子节点父节点 private Node findParent(Node child, Node[] nodes) { for (Node node : nodes) { if (child.getParentId().equals(node.getId())) { return node; } } return null; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值