我有一个XML文件如下
<?xml version="1.0>
<EMR>
<CustomTextBox>
<Text>WNL</Text>
<Type>TextBox</Type>
<Width>500</Width>
<id>txt1</id>
</CustomTextBox>
<CustomTextBox>
<Text>WNL</Text>
<Type>TextBox</Type>
<Width>500</Width>
<id>txt2</id>
</CustomTextBox>
<AllControlsCount>
<Width>0</Width>
<id>ControlsID</id>
</AllControlsCount>
</EMR>
Run Code Online (Sandbox Code Playgroud)
我想将xml文件拆分为三个.根据它的节点
档案1:
<?xml version="1.0>
<CustomTextBox>
<Text>WNL</Text>
<Type>TextBox</Type>
<Width>500</Width>
<id>txt1</id>
</CustomTextBox>
Run Code Online (Sandbox Code Playgroud)
文件2:
<?xml version="1.0>
<CustomTextBox>
<Text>WNL</Text>
<Type>TextBox</Type>
<Width>500</Width>
<id>txt2</id>
</CustomTextBox>
Run Code Online (Sandbox Code Playgroud)
档案3:
<?xml version="1.0>
<AllControlsCount>
<Width>0</Width>
<id>ControlsID</id>
</AllControlsCount>
Run Code Online (Sandbox Code Playgroud)
节点也是动态的,它们可能会改变.如何根据节点将此xml文件拆分为多个.如果有人知道请分享.
试试LinqToXml:
var xDoc = XDocument.Parse(Resource1.XMLFile1); // loading source xml
var xmls = xDoc.Root.Elements().ToArray(); // split into elements
for(int i = 0;i< xmls.Length;i++)
{
// write each element into different file
using (var file = File.CreateText(string.Format("xml{0}.xml", i + 1)))
{
file.Write(xmls[i].ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
它将获取根元素内定义的所有元素,并将其内容写入单独的文件中.
使用Linq to Xml更简单 - 您可以使用XElement.Save方法将任何元素保存为单独的xml文件:
XDocument xdoc = XDocument.Load(path_to_xml);
int index = 0;
foreach (var element in xdoc.Root.Elements())
element.Save(++index + ".xml");
Run Code Online (Sandbox Code Playgroud)
或者一行
XDocument.Load(path_to_xml).Root.Elements()
.Select((e, i) => new { Element = e, File = ++i + ".xml" })
.ToList().ForEach(x => x.Element.Save(x.File));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21718 次 |
| 最近记录: |