编辑 XDocument 中的现有元素
Edit existing element in XDocument
我找到了这个主题并将其改编为我的 XML 文件
我的 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# 代码到 select 并编辑特定记录看起来像
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;
}
问题是它 returns 整个文档,我不明白为什么。
我使用 XDocument,该应用专为 WP8.1 设计
你能帮我解决这个问题吗?
谢谢!
方法DescendantsAndSelf(XName name)
returns 每个具有匹配名称的元素和该元素的所有后代元素 (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());
我找到了这个主题并将其改编为我的 XML 文件
我的 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# 代码到 select 并编辑特定记录看起来像
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;
}
问题是它 returns 整个文档,我不明白为什么。
我使用 XDocument,该应用专为 WP8.1 设计
你能帮我解决这个问题吗?
谢谢!
方法DescendantsAndSelf(XName name)
returns 每个具有匹配名称的元素和该元素的所有后代元素 (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());