Asp.net 动态修改xml
以下代码段返回xml文档Asp.net 动态修改xml,asp.net,xml,nodes,Asp.net,Xml,Nodes,以下代码段返回xml文档 public XmlDocument GetXMLFile(int ID) { List<UserInfoBE> data = GetById(ID); DataSet ds = ConvertGenericsListToDataSet(data); XmlDocument XmlDoc = new XmlDocument(); XmlDocum
public XmlDocument GetXMLFile(int ID)
{
List<UserInfoBE> data = GetById(ID);
DataSet ds = ConvertGenericsListToDataSet(data);
XmlDocument XmlDoc = new XmlDocument();
XmlDocument doc = GenerateXMLDeclaration(XmlDoc);//Create xml Declaration
doc = AddTableTag(doc);//Create parent node USERDATA
foreach (DataRow dr in ds.Tables[0].Rows)
{
doc = AddUserinfoTag(doc, dr[8].ToString(), Convert.ToInt32(dr[31].ToString()), Convert.ToString(dr[32].ToString()), dr[3].ToString());
}
doc = SetHeirarchyLevel(doc);
string _errorFile = AppDomain.CurrentDomain.BaseDirectory + "XML\\";
System.IO.Directory.CreateDirectory(_errorFile);
_errorFile += "FIle" + DateTime.Now.ToString("dd-MM-yyyy") + ".xml";
XmlNodeList nodes = doc.SelectNodes("USERDATA/Userinfo");
XmlDocument newXMLDoc = new XmlDocument();
XmlDocument newDoc = GenerateXMLDeclaration(newXMLDoc);
newDoc.AppendChild(nodes);
doc.Save(_errorFile);
return doc;
}
public-XmlDocument-GetXMLFile(int-ID)
{
列表数据=GetById(ID);
数据集ds=ConvertGenericsListToDataSet(数据);
XmlDocument XmlDoc=新的XmlDocument();
XmlDocument doc=GenerateXMLDeclaration(XmlDoc);//创建xml声明
doc=AddTableTag(doc);//创建父节点用户数据
foreach(ds.Tables[0].行中的数据行dr)
{
doc=AddUserinfoTag(doc,dr[8].ToString(),Convert.ToInt32(dr[31].ToString()),Convert.ToString(dr[32].ToString()),dr[3].ToString());
}
doc=设置其ARCHYLEVEL(doc);
字符串_errorFile=AppDomain.CurrentDomain.BaseDirectory+“XML\\”;
System.IO.Directory.CreateDirectory(_errorFile);
_errorFile++=“FIle”+DateTime.Now.ToString(“dd-MM-yyyy”)+“.xml”;
XmlNodeList nodes=doc.SelectNodes(“USERDATA/Userinfo”);
XmlDocument newXMLDoc=新的XmlDocument();
XmlDocument newDoc=GenerateXMLDeclaration(newXMLDoc);
newDoc.AppendChild(节点);
文件保存(_errorFile);
退货单;
}
XML文件格式:
<?xml version="1.0"?>
<USERDATA>
<Userinfo>
<Userinfo>
<Userinfo>
<Userinfo>
<Userinfo>
<Userinfo/>
<Userinfo>
<Userinfo/>
</Userinfo>
</Userinfo>
<Userinfo>
<Userinfo/>
<Userinfo/>
</Userinfo>
</Userinfo>
</Userinfo>
</Userinfo>
</Userinfo>
</EDVDATA>
问题:如何获取以下格式的文件
<Userinfo>
<Userinfo>
<Userinfo>
<Userinfo>
<Userinfo>
<Userinfo/>
<Userinfo>
<Userinfo/>
</Userinfo>
</Userinfo>
<Userinfo>
<Userinfo/>
<Userinfo/>
</Userinfo>
</Userinfo>
</Userinfo>
</Userinfo>
</Userinfo>
我尝试的是将returndoc对象(Xml文件)保存在一个文件夹中。
然后创建了一个新的xmldocument对象,并尝试在新的xmlobject中附加Xmlnodelist,该Xmlnodelist包含用户信息结构(就在上面)
newDoc.AppendChild(节点);行抛出错误
无法从“System.Xml.XmlNodeList”转换为“System.Xml.xmlnodel”
非常感谢您提供的任何帮助。您正在尝试附加多个节点,但该函数一次只附加一个节点。试试这个:
foreach(XmlNode node in nodes)
{
newDoc.AppendChild(node);
}
就这样解决了,
公共XmlDocument GetXMLFile(int-ID)
{
List<UserInfoBE> data = GetById(ID);
DataSet ds = ConvertGenericsListToDataSet(data);
XmlDocument XmlDoc = new XmlDocument();
XmlDocument doc = GenerateXMLDeclaration(XmlDoc);//Create xml Declaration
doc = AddTableTag(doc);//Create parent node USERDATA
foreach (DataRow dr in ds.Tables[0].Rows)
{
doc = AddUserinfoTag(doc, dr[8].ToString(), Convert.ToInt32(dr[31].ToString()), Convert.ToString(dr[32].ToString()), dr[3].ToString());
}
doc = SetHeirarchyLevel(doc);
XmlNodeList nodes = doc.SelectNodes("USERDATA/Userinfo");
XmlDocument newXMLDoc = new XmlDocument();
XmlDocument newDoc = GenerateXMLDeclaration(newXMLDoc);
foreach (XmlNode node in nodes)
{
newDoc.AppendChild(newDoc.ImportNode(node,true));
}
return newDoc;
}
List data=GetById(ID);
数据集ds=ConvertGenericsListToDataSet(数据);
XmlDocument XmlDoc=新的XmlDocument();
XmlDocument doc=GenerateXMLDeclaration(XmlDoc);//创建xml声明
doc=AddTableTag(doc);//创建父节点用户数据
foreach(ds.Tables[0].行中的数据行dr)
{
doc=AddUserinfoTag(doc,dr[8].ToString(),Convert.ToInt32(dr[31].ToString()),Convert.ToString(dr[32].ToString()),dr[3].ToString());
}
doc=设置其ARCHYLEVEL(doc);
XmlNodeList nodes=doc.SelectNodes(“USERDATA/Userinfo”);
XmlDocument newXMLDoc=新的XmlDocument();
XmlDocument newDoc=GenerateXMLDeclaration(newXMLDoc);
foreach(节点中的XmlNode节点)
{
newDoc.AppendChild(newDoc.ImportNode(node,true));
}
返回newDoc;
}
谢谢,你说得对,Appenshild方法需要单节点。