Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
C# 需要添加新XML节点的帮助吗 基础知识 DEF 附言 附言 GHI 亲民党 太太 MNO BBG 马克斯_C#_.net_Xml - Fatal编程技术网

C# 需要添加新XML节点的帮助吗 基础知识 DEF 附言 附言 GHI 亲民党 太太 MNO BBG 马克斯

C# 需要添加新XML节点的帮助吗 基础知识 DEF 附言 附言 GHI 亲民党 太太 MNO BBG 马克斯,c#,.net,xml,C#,.net,Xml,我想添加一个新节点,如上述XML中所述。我试了很多,但没有成功 <?xml version="1.0" encoding="utf-8"?> <mappings> <mapping> <aID iskey="true">ABC</aID> <bID iskey="true">DEF</bID> <SubAccount>PS</SubAccount> &l

我想添加一个新节点,如上述XML中所述。我试了很多,但没有成功

<?xml version="1.0" encoding="utf-8"?>
<mappings>
  <mapping>
    <aID iskey="true">ABC</aID>
    <bID iskey="true">DEF</bID>
    <SubAccount>PS</SubAccount>
    <Account>PS</Account>
  </mapping>
  <mapping>
    <aID isKey="true">GHI</aID>
    <bID isKey="true">PFP</bID>
    <SubAccount>MS</SubAccount>
    <!-- I want to add a new node here, how can I do this  -->
  </mapping>
  <mapping>
    <aID isKey="true">MNO</aID>
    <bID isKey="true">BBG</bID>
    <SubAccount>MAX</SubAccount>
  </mapping>
</mappings>
XmlDocument xDoc=new XmlDocument();
加载(文件名);
foreach(xmlDoc.SelectNodes中的XmlNode节点(“/mappings/mapping”))
{
if(boothIDNode.InnerXml==BoothID)
{
chkBoothIDExists=真;
if(clientDNode.InnerText==ClientID)
{
chkClientIDExists=true;
for(int j=2;j
问题解决了。这个问题是由于我愚蠢的错误造成的。基本上有两个xml documnet,我正在创建另一个xml documnet的新节点,由于该节点会出现错误。 谢谢大家, XmlDocument xDoc=新的XmlDocument(); XmlDocument xmlDoc=新的XmlDocument()


错误:要插入的节点来自不同的文档上下文

,为了添加一个节点,请考虑这个例子:

XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);

foreach (XmlNode node in xmlDoc.SelectNodes("/mappings/mapping"))
{
    if (boothIDNode.InnerXml == BoothID)
    {
        chkBoothIDExists = true;
        if (clientIDNode.InnerText == ClientID)
        {
            chkClientIDExists = true;
            for (int j = 2; j < nodelist.Count; j++)
            {
                columnNode = nodelist[j];
                if (columnNode.Name == column.ToString())
                {
                    XmlNode elm = xDoc.CreateNode(XmlNodeType.Element,"Account",null);
                    elm.InnerText = value.ToString();                                                                                 
                    node.AppendChild(elm);  //  Error comes here 
                }
            }
        }
    }   
}

xmlDoc.Save(filename);  
XDocument a=XDocument.Parse(@)
基础知识
FPP
附言
附言
GHI
亲民党
太太
MNO
BBG
马克斯
");
a、 子体(“映射”).Skip(1).First().Add(新的XElement(“aaa”,新的XAttribute(“id”,1));
--->


基础知识
FPP
附言
附言
GHI
亲民党
太太
MNO
BBG
马克斯

<代码> > p>为了添加一个节点,请考虑这个例子:

XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);

foreach (XmlNode node in xmlDoc.SelectNodes("/mappings/mapping"))
{
    if (boothIDNode.InnerXml == BoothID)
    {
        chkBoothIDExists = true;
        if (clientIDNode.InnerText == ClientID)
        {
            chkClientIDExists = true;
            for (int j = 2; j < nodelist.Count; j++)
            {
                columnNode = nodelist[j];
                if (columnNode.Name == column.ToString())
                {
                    XmlNode elm = xDoc.CreateNode(XmlNodeType.Element,"Account",null);
                    elm.InnerText = value.ToString();                                                                                 
                    node.AppendChild(elm);  //  Error comes here 
                }
            }
        }
    }   
}

xmlDoc.Save(filename);  
XDocument a=XDocument.Parse(@)
基础知识
FPP
附言
附言
GHI
亲民党
太太
MNO
BBG
马克斯
");
a、 子体(“映射”).Skip(1).First().Add(新的XElement(“aaa”,新的XAttribute(“id”,1));
--->


基础知识
FPP
附言
附言
GHI
亲民党
太太
MNO
BBG
马克斯

使用类似的方法,不要使用c#person,但这应该会有所帮助。我认为insertafter是您需要的:

      <mappings>
  <mapping>
    <aID iskey="true">ABC</aID>
    <bID iskey="true">FPP</bID>
    <SubAccount>PS</SubAccount>
    <Account>PS</Account>
  </mapping>
  <mapping>
    <aID isKey="true">GHI</aID>
    <bID isKey="true">PFP</bID>
    <SubAccount>MS</SubAccount>
    <!-- I want to add a new node here, how can I do this  -->
    <aaa id="1" />
  </mapping>
  <mapping>
    <aID isKey="true">MNO</aID>
    <bID isKey="true">BBG</bID>
    <SubAccount>MAX</SubAccount>
  </mapping>
</mappings>

使用类似的东西,不要使用c#person,但这应该会有所帮助。我认为insertafter是您需要的:

      <mappings>
  <mapping>
    <aID iskey="true">ABC</aID>
    <bID iskey="true">FPP</bID>
    <SubAccount>PS</SubAccount>
    <Account>PS</Account>
  </mapping>
  <mapping>
    <aID isKey="true">GHI</aID>
    <bID isKey="true">PFP</bID>
    <SubAccount>MS</SubAccount>
    <!-- I want to add a new node here, how can I do this  -->
    <aaa id="1" />
  </mapping>
  <mapping>
    <aID isKey="true">MNO</aID>
    <bID isKey="true">BBG</bID>
    <SubAccount>MAX</SubAccount>
  </mapping>
</mappings>
你可以写更长的 外汇:

你可以写更长的 外汇:


请给我们看看你试过什么。什么版本的.Net
XDocument
是用于导航和修改Xml文档的最简单对象。查看您是否正在使用.Net 3.5或更高版本..Net 4。通过使用此方法,我成功地附加了一个子xDoc.DocumentElement.SelectSingleNode(“/mappings/mapping”).AppendChild();但这会在根节点的末尾添加一个新节点。要插入的节点来自不同的文档上下文。minitech您的注释解决了我的问题。谢谢我创建了两个XmlDocument:(请告诉我们您尝试了什么。什么版本的.Net?
XDocument
是导航和修改Xml文档最容易使用的对象。查看您是否在使用.Net 3.5或更高版本..Net 4。通过使用此方法,我成功地附加了一个子xDoc.DocumentElement。选择SingleNode(“/mappings/mapping”).AppendChild();但这将在根节点的末尾添加一个新节点。要插入的节点来自不同的文档上下文。minitech您的评论解决了我的问题。谢谢。我创建了两个XmlDocument:(我不必使用LINQ。但是我的问题解决了,谢谢你的时间和评论。我不必使用LINQ。但是我的问题解决了,谢谢你的时间和评论
XDocument doc = XDocument.Load(filepath); // filepath is string
doc.Element(firstnodename).SetElementValue(descendantname,newvalue); //names and value are string
doc.Save(filepath); // This line optional. And filepath like : @"C:\Users\user\desktop\a.xml" or "C:\\Users\\user\\desktop\\a.xml". You should write with ".
doc.Element(firstnode).Element(secondnode).Element(thirdnode).SetElementValue(fourthnode,valueoffourth);