Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 动态修改xml_Asp.net_Xml_Nodes - Fatal编程技术网

Asp.net 动态修改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

以下代码段返回xml文档

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方法需要单节点。