我需要创建几个具有相同子节点的xml节点,但每个节点的名称应该是区别的。
<Rootnode>
<somename1>
<testFilename><![CDATA[some-name]]></testFilename>
<parentDirectory><![CDATA[some-path]]></parentDirectory>
</somename1>
<somename2>
<testFilename><![CDATA[some-diff-name]]></testFilename>
<parentDirectory><![CDATA[some-diff-path]]></parentDirectory>
</somename2>
<somename3>
<testFilename><![CDATA[some-diff-name]]></testFilename>
<parentDirectory><![CDATA[some-diff-path]]></parentDirectory>
</somename3>
</Rootnode>
那个&#34; somename&#34;将从另一个函数
获取为字符串需要创建此节点的模板,因为节点数量为100 通过使用seralization我这样做
public class template1
{
public template1()
{
}
private String Filename;
private String Parentpath;
public System.Xml.XmlCDataSection testFilename
{
get
{
return new System.Xml.XmlDocument().CreateCDataSection(Filename);
}
set
{
this.Filename = value.Value;
}
}
public System.Xml.XmlCDataSection parentDirectory
{
get
{
return new System.Xml.XmlDocument().CreateCDataSection(Parentpath);
}
set
{
this.Parentpath = value.Value;
}
}
}
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)//will vary as per the no. of nodes to be generated
{
XmlDocument xdoc = new XmlDocument();
XmlCDataSection FCData, PCData;
String fname, pname;
fname = "some file name";
FCData = xdoc.CreateCDataSection(fname);
template1 a = new template1();
a.testFilename = FCData;
pname = "some path";
PCData = xdoc.CreateCDataSection(fname);
a.parentDirectory = PCData;
Serialize(a);
}
}
static public void Serialize(template1 t)
{
XmlSerializer serializer = new XmlSerializer(typeof(template1));
using (TextWriter writer = new StreamWriter(@"C:\\abc\\xelname.xml",true))
{
serializer.Serialize(writer, t);
}
}
}
这个生成的输出文件需要不同的名称而不是那个template1
<?xml version="1.0" encoding="utf-8"?>
<template1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<testFilename><![CDATA[some file name0]]></testFilename>
<parentDirectory><![CDATA[some file name0]]></parentDirectory>
</template1>
<?xml version="1.0" encoding="utf-8"?>
<template1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<testFilename><![CDATA[some file name1]]></testFilename>
<parentDirectory><![CDATA[some file name1]]></parentDirectory>
</template1>
<?xml version="1.0" encoding="utf-8"?>
<template1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<testFilename><![CDATA[some file name2]]></testFilename>
<parentDirectory><![CDATA[some file name2]]></parentDirectory>
</template1>
以及如何忽略template1节点
的属性答案 0 :(得分:0)
为您的模板创建一个单独的XML文件,其中包含您要插入数据的某种特殊代码。例如:
<example value="[MyData]" />
创建一个方法,该方法接收所需的节点名称,并加载此XML文件并循环遍历它,检查每个值,属性等中的代码并将其替换为您的数据。将这些节点添加到具有提供名称的新根节点,或将根节点重命名为您提供的名称。
然后只需返回该节点树,随时可以在任何需要的地方附加。这允许您拥有多个模板,这些模板都包含相同的自定义&#34;字段&#34;被替换出来。