c# - 如何在所有其他子节点周围创建和包装子节点?
问题描述
我有这样的事情:
<DataTable>
<Tests>
<Test1>1</Test1>
<Test2>2</Test2>
<Test3>3</Test3>
</Tests>
<Tests>
<Test1>4</Test1>
<Test2>5</Test2>
<Test3>6</Test3>
</Tests>
</DataTable>
有没有办法创建另一个子节点并将其包裹在所有其他测试中,如下所示:
<DataTable>
<WrapChild>
<Tests>
<Test1>1</Test1>
<Test2>2</Test2>
<Test3>3</Test3>
</Tests>
</WrapChild>
<WrapChild>
<Tests>
<Test1>4</Test1>
<Test2>5</Test2>
<Test3>6</Test3>
</Tests>
</WrapChild>
</DataTable>
我创建了一个子 WrapChild,现在有这样的东西:
<DataTable>
<WrapChild/>
<Tests>
<Test1>1</Test1>
<Test2>2</Test2>
<Test3>3</Test3>
</Tests>
<Tests>
<Test1>4</Test1>
<Test2>5</Test2>
<Test3>6</Test3>
</Tests>
</DataTable>
我创建子元素的代码是:
XmlDocument docForList = new XmlDocument();
XmlElement childElement = docForList.CreateElement("WrapChild");
XmlNode parentNode = docForList.SelectSingleNode("DataTable");
parentNode.InsertBefore(childElement,parentNode.FirstChild);
但是如何设置它以将所有内容都包含在测试中?
解决方案
创建“WrapChild”元素后,您需要将“Tests”作为子元素附加到它。
样本输入:
<DataTable>
<Tests>
<Test1>1</Test1>
<Test2>2</Test2>
<Test3>3</Test3>
</Tests>
<Tests>
<Test1>4</Test1>
<Test2>5</Test2>
<Test3>6</Test3>
</Tests>
</DataTable>
代码:
var doc = new XmlDocument();
doc.LoadXml(xml);
var wrap = doc.CreateElement("WrapChild");
doc.SelectSingleNode("DataTable").AppendChild(wrap);
var nodes = doc.SelectNodes("//Tests");
var nodesCount = nodes.Count;
for(var i=0;i<nodesCount;i++)
wrap.AppendChild(nodes[i]);
输出:
<DataTable>
<WrapChild>
<Tests>
<Test1>1</Test1>
<Test2>2</Test2>
<Test3>3</Test3>
</Tests>
<Tests>
<Test1>4</Test1>
<Test2>5</Test2>
<Test3>6</Test3>
</Tests>
</WrapChild>
</DataTable>
推荐阅读
- python - 在 sqlalchemy 和烧瓶中获取上个月的数据
- python - 是否可以使用列表中的名称命名 pandas DataFrame 中的列
- javascript - 如何在同一页面上添加多个相同的自定义古腾堡块?
- amazon-web-services - AWS:公共子网 + VPN 网关
- eclipse - 我正在尝试在 Eclipse 中安装 Maven。但我无法制作 maven-archetype
- latex - 将整个stata表导出到latex
- python - 如何在python中计算父节点之后的所有节点
- c++ - 如何确定最大线程数?
- ansible - Ansible - 根据条件设置变量
- java - 应用程序启动失败以下方法不存在:org.springframework.plugin.core.PluginRegistry.of(org.springframework.plugin.core.Plugin[])