Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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/6/entity-framework/4.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# 用XElement追加XML_C#_Xml_Linq_Wcf - Fatal编程技术网

C# 用XElement追加XML

C# 用XElement追加XML,c#,xml,linq,wcf,C#,Xml,Linq,Wcf,PurchaseList.xml <purchaseList> <user id="13004"> <books> <book isbn="1111707154" title="Music Potter 2" author="customer" price="10" currency="RM" /> </books> </user> </purchaseList&

PurchaseList.xml

<purchaseList>
    <user id="13004">
      <books>
        <book isbn="1111707154" title="Music Potter 2" author="customer" price="10" currency="RM" />
      </books>
    </user>
</purchaseList>
输出:

<user id="13004">
    <books>
        <book isbn="1111707154" title="Music Potter 2" author="customer" price="10" currency="RM" />
    </books>
    <book isbn="1439056501" title="Harry Potter" author="customer" price="10" currency="RM" />
</user>

预期产出:

<purchaseList>
    <user id="13004">
      <books>
        <!-- Should append inside here -->
        <book isbn="1111707154" title="Music Potter 2" author="customer" price="10" currency="RM" />
        <book isbn="1439056501" title="Harry Potter" author="customer" price="10" currency="RM" />
      </books>
    </user>
</purchaseList>

如您所见,我希望使用XElement附加xml文件,但输出不是我所期望的,它甚至删除了标记并附加到错误的位置。

Replace
xNewBook.Add(xPurchaseBook)

使用
xNewBook.Element(“books”).Add(xPurchaseBook)

您正在LINQ查询中选择用户,并在其中添加一个新项。您需要从用户处获取
books
元素,并应添加该元素

您应该获取
books
元素并保存整个
xDoc
,而不是
xNewBook

XElement xNewBook = (from user in xDoc.Descendants("user")
                      where (String)user.Attribute("id") == "13004"
                       select user.Element("books")).Single();
并保存
xDoc
-

xDoc.Save(localPath + "PurchaseList.xml");
xDoc.Save(localPath + "PurchaseList.xml");