【发布时间】:2020-05-08 16:44:09
【问题描述】:
我一直致力于从 XML 字符串中删除几个 XML 节点。我的要求是删除与列表项匹配的 XML 节点。我试图获取 childNodes 并检查 childNode 的名称是否在属性列表中。我已经生成了存在于 MovieDetails 类中的属性列表。
public class MovieDetails
{
public string MovieName { get; set; }
public string MovieId { get; set; }
public string MovieGenre { get; set; }
}
MyXml:
<MovieContent>
<MovieDetails>
<MovieName>Movie_Name_1</MovieName>
<MovieId>MovieId_1</MovieId>
<MovieGenre>MovieGenre_3</MovieGenre>
<AdditionalInformation>HAHAHHAHA</AdditionalInformation>
</MovieDetails>
<MovieDetails>
<MovieName>Movie_Name_2</MovieName>
<MovieId>MovieId_2</MovieId>
<MovieGenre>MovieGenre_3</MovieGenre>
<AdditionalInformation>FOOOO</AdditionalInformation>
</MovieDetails>
<MovieDetails>
<MovieName>Movie_Name_3</MovieName>
<MovieId>MovieId_3</MovieId>
<MovieGenre>MovieGenre_3</MovieGenre>
<AdditionalInformation></AdditionalInformation>
</MovieDetails>
</MovieContent>
我尝试使用 for 循环,但无法获得我想要的结果。但是从下面的代码中,我每次都可以在 1 个节点上删除。
var movieDetailsNode = xmlContent.DocumentElement.ChildNodes;
var properties = typeof(MovieDetails).GetProperties().Select(x => x.Name).ToList();
foreach (XmlNode node in movieDetailsNode )
{
var childNodeList = node.ChildNodes;
for (int i = 0; i < childNodeList.Count; i++)
{
var childNodeName = childNodeList[0].Name;
if (properties.Contains(childNodeName))
{
childNodeList[i].ParentNode.RemoveChild(childNodeList[i]);
}
}
}
任何人都可以帮助实现以下结果 xml
生成的 XML:
<MovieContent>
<MovieDetails>
<AdditionalInformation>HAHAHHAHA</AdditionalInformation>
</MovieDetails>
<MovieDetails>
<AdditionalInformation>FOOOO</AdditionalInformation>
</MovieDetails>
<MovieDetails>
<AdditionalInformation></AdditionalInformation>
</MovieDetails>
</MovieContent>
【问题讨论】:
标签: c# .net xml asp.net-core c#-4.0