我有一个XML文件,我想将其拆分为多个基于VIEWNAME的XML文件。
根据下面的示例,有三个VIEWNAME值,对于每个值,还有VIEWPANE元素和VIEWCOLUMN元素。
使用LINQ,我的代码到目前为止可以保存仅包含VIEWNAME节点的文件:
<?xml version="1.0" standalone="yes"?>
<VisualModelDS>
<viewname>
<viewname>A B C</viewname>
</viewname>
<viewpane>
<viewname>A B C</viewname>
<viewpane>ALPHA</viewpane>
</viewpane>
<viewcolumn>
<viewname>A B C</viewname>
<viewpane>ALPHA</viewpane>
<viewcolumn>Apples</viewcolumn>
</viewcolumn>
<viewcolumn>
<viewname>A B C</viewname>
<viewpane>ALPHA</viewpane>
<viewcolumn>Oranges</viewcolumn>
</viewcolumn>
<viewname>
<viewname>X Y Z</viewname>
</viewname>
<viewpane>
<viewname>X Y Z</viewname>
<viewpane>CAPPA</viewpane>
</viewpane>
<viewcolumn>
<viewname>X Y Z</viewname>
<viewpane>CAPPA</viewpane>
<viewcolumn>Macadema</viewcolumn>
</viewcolumn>
<viewcolumn>
<viewname>X Y Z</viewname>
<viewpane>CAPPA</viewpane>
<viewcolumn>Pecan</viewcolumn>
</viewcolumn>
<viewpane>
<viewname>X Y Z</viewname>
<viewpane>OMEGA</viewpane>
</viewpane>
<viewcolumn>
<viewname>X Y Z</viewname>
<viewpane>OMEGA</viewpane>
<viewcolumn>Peanut</viewcolumn>
</viewcolumn>
</VisualModelDS>
我正在寻求帮助以包含具有相应VIEWNAME值的其他节点。我想我想要的是对具有相同子VIEWNAME元素的所有父/子元素进行分组,然后根据VIEWNAME元素值将每组元素保存到自己的XML文件中。
下面的XML将解析为2个文件,并且我已经嵌入了一个硬回车来区分哪些元素会进入哪个文件。
所有人都说,每个父元素都有一个子VIEWNAME元素,可以从中分组。
XML将嵌入空间编辑为元素值
dataType : "html"
答案 0 :(得分:1)
var viewNames = xdoc.Root.Elements("viewname").Elements("viewname");
foreach (var viewName in viewNames)
{
var group = new XElement(viewName.Value.Replace(" ", ""),
xdoc.Root.Elements().Where(elem => elem.Element("viewname").Value == viewName.Value));
group.Save(viewName.Value + ".txt");
}