【发布时间】:2017-04-05 22:35:23
【问题描述】:
我有一个 XML 文件,我想将其拆分为多个基于 VIEWNAME 的 XML 文件。
根据下面的示例,存在三个 VIEWNAME 值,并且对于每个值,还有 VIEWPANE 元素和 VIEWCOLUMN 元素。
使用 LINQ,到目前为止,我的代码可以保存仅包含 VIEWNAME 节点的文件:
static void VisualViews( XDocument xdoc)
{
var baseFolder = Prep(FolderRDS, "VisualViews");
var viewNames = xdoc.Element("VisualModelDS").Elements("viewname");
foreach (var viewName in viewNames)
{
var name = viewName.Element("viewname").Value;
viewName.Save(string.Format(@"{0}{1}.xml", baseFolder, name));
}
}
我正在寻求帮助以包括具有相应 VIEWNAME 值的其他节点。我想我想要的是对具有相同子 VIEWNAME 元素的所有父/子元素进行分组,然后根据 VIEWNAME 元素值将每组元素保存到自己的 XML 文件中。
下面的 XML 将解析为 2 个文件,并且我嵌入了一个硬返回来区分哪些元素将进入哪个文件。
总而言之,每个父元素都有一个子 VIEWNAME 元素作为分组依据。
编辑 XML 以将空间嵌入到元素值中
<?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>
【问题讨论】: