【发布时间】:2013-04-29 17:04:07
【问题描述】:
我正在尝试创建一个使用 LINQ 和 Genertics 保存/读取多个 XML 文件的类。
我正在寻找保存多种类型的 XMl 文件(即其中的数据)的通用方法
每个 XML 文件都有以下格式
<ROOT>
<!-- First Element/First Row -->
<NODE>
<COL1>Some value</COL1>
.....
<COLn>Some value</COLn>
</NODE>
.........
<!-- Nth Element = nth row -->
<NODE>
<COL1>Some value</COL1>
.....
<COLn>Some value</COLn>
</NODE>
</ROOT>
每个文件都有不同的 ROOT、NODE 和 COLx。列数和其中的数据取决于 Multi-Dim 数组输入。这个输入数组还给出了 xml 中节点标签的数量(数组中的元素)。
保存 XML 文件的方法如下所示
public void SaveFirstXmlFile()
{
XElement xdoc = new XElement("ThisDocsRoot");
//Iterate for number of rows(elements of data)
for (int nodes= 1; nodes<= NUMBER_OF_NODES; nodes++)
{
xdoc.Add(new XElement(row,
new XElement("Col 1", "Some Value"),
new XElement("Col 2", "Some Value"),
new XElement("Col 3", "Some Value")
));
}
xdoc.Save("/Path/To/XML/File");
}
我想调整这个方法,使其适用于多个 XML 文件。我不知道这是否是正确的做法,但我计划创建定义 XML 的根、节点、列和路径的类文件。并且数据来自其他一些类创建的Multi-Dim Arrays。
private class AClassforSomeXMLFile
{
private readonly String _root;
private readonly String _row;
private readonly String[] _columns;
private readonly String _exportPath;
public UsageData()
{
_exportPath = string.Format(@"{0}\xyz.xml",Path.GetDirectoryName(Application.ExecutablePath));
_root = "ROOT";
_row = "NODE";
_columns = new string[]
{
"COL1","COL2", "COL3","COL4",
};
}
public string ROOT { get { return _root; } }
public string ROW { get { return _row; } }
public string[] COLS { get { return _columns; }}
public string EPATH { get { return _exportPath; }}
}
【问题讨论】:
-
我不明白这需要泛型——只需将
SaveFirstXmlFile中的文字替换为AClassforSomeXMLFile中的值? -
我知道,但这仅适用于一类,而且我至少要制作 5 种不同类型的 XML 文件。我想要一种适用于所有这些的方法。
-
你能再举一个你想要制作的另一种xml文件的例子吗?目前还不是很清楚这些 xml 文件之间有什么区别。是不是只有节点的名字,比如ROOT可以变成AAA,NODE可以变成ITEM等等?还是xml结构不同?
-
如果您对格式有任何控制权,请将 COL1-COLn 替换为一系列 COL 元素,使用 XML 序列化解决它变得微不足道。
-
@Alexander XML 文件之间的区别在于元素,即根名称、节点名称和列数。请参阅我对 Sam 的评论。