我有一个XML文件,结构如下:
let
我发送一个新的XML元素,如上所示,它将类似于:
<scan client="Computer1" end="9/20/2016 7:00:00 AM" start="9/20/2016 7:00:00 AM">
<childfile>
<name>file.ext</name>
<lastmodified>8/31/2016</lastmodified>
<age>19</age>
</childfile>
<childfile>
<name>file2.ext</name>
<lastmodified>9/1/2016</lastmodified>
<age>18</age>
</childfile>
<childfile>
<name>file3.ext</name>
<lastmodified>8/19/2016</lastmodified>
<age>31</age>
</childfile>
<childfile>
<name>file4.ext</name>
<lastmodified>8/23/2016</lastmodified>
<age>27</age>
</childfile>
</scan>
<scan client="Computer2" end="9/20/2016 7:00:00 AM" start="9/20/2016 7:00:00 AM">
<childfile>
<name>file.ext</name>
<lastmodified>8/31/2016</lastmodified>
<age>19</age>
</childfile>
<childfile>
<name>file2.ext</name>
<lastmodified>9/1/2016</lastmodified>
<age>18</age>
</childfile>
<childfile>
<name>file3.ext</name>
<lastmodified>8/19/2016</lastmodified>
<age>31</age>
</childfile>
<childfile>
<name>file4.ext</name>
<lastmodified>8/23/2016</lastmodified>
<age>27</age>
</childfile>
</scan>
如何搜索原始XML以查看它是否具有与所提供的客户端属性匹配的客户端属性的扫描部分,如果它与之匹配,则将该元素替换为所提供的元素。如果它没有找到匹配项,则需要将该元素添加到现有元素中。
我试图使用:
<scan client="Computer1" end="9/25/2016 7:00:00 AM" start="9/25/2016 7:00:00 AM">
<childfile>
<name>file.ext</name>
<lastmodified>8/31/2016</lastmodified>
<age>19</age>
</childfile>
<childfile>
<name>file2.ext</name>
<lastmodified>9/1/2016</lastmodified>
<age>18</age>
</childfile>
</scan>
使用
设置客户端varoriginalXML.Elements("scan").SingleOrDefault(e => e.Attribute("client").Value == client)
似乎每次都返回null,即使我检查了客户端字符串并将其设置为&#34; Computer1&#34;。
关于为什么这总是返回null的任何想法?
答案 0 :(得分:0)
你有两个问题......
所以你的linq2xml看起来像这样......
var client = replacementXML.Root.Attribute("client").Value;
var match = originalXML.Root.Elements("scan")
.SingleOrDefault(e => e.Attribute("client").Value == client);
好吧,我想我有点迟了......我看到你的评论说你已经修好了。 :)