我找到了这个主题并将其改编为我的XML文件https://stackoverflow.com/a/18509248
我的XML代码看起来像这样
<body>
<id>1</id>
<disc>B</disc>
<type>Mark</type>
<value>5</value>
<id>2</id>
<disc>A</disc>
<type>Mark</type>
<value>10</value>
</body>
用C#代码选择和编辑某些记录,如
try
{
var target = doc
.DescendantsAndSelf("body")
.Where(e => e.Element("disc").Value == Disc
&& e.Element("type").Value.ToString().Equals(Type.ToString())
&& e.Element("value").Value.ToString().Equals(OldMark.ToString()))
.Single();
Debug.WriteLine(target.ToString());
}
catch (Exception)
{
throw;
}
问题是它返回整个文档,我无法弄清楚原因。
我使用XDocument,该应用程序专为WP8.1
设计你能帮我解决这个问题吗?
谢谢!
答案 0 :(得分:0)
方法DescendantsAndSelf(XName name)
返回具有匹配名称的每个元素以及此元素的所有后代元素(MSDN)。在您的情况下,body
元素及其子元素。
您可能希望像以下一样构建XML:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<someElement>
<id>1</id>
<disc>B</disc>
<type>Mark</type>
<value>5</value>
</someElement>
<someElement>
<id>2</id>
<disc>A</disc>
<type>Mark</type>
<value>10</value>
</someElement>
</body>
所以您可以像这样获得单个someElement
XML节点:
var target = doc.DescendantsAndSelf("someElement")
.Where(e => e.Element("disc").Value == Disc
&& e.Element("type").Value.ToString().Equals(Type.ToString())
&& e.Element("value").Value.ToString().Equals(OldMark.ToString()))
.Single();
Debug.WriteLine(target.ToString());