读取特定的XML元素
本文关键字:XML 元素 读取 | 更新日期: 2023-09-27 18:04:15
我们有一家供应商公司,要求xml数据文件具有特定的布局。该结构在XSD文件中定义,并且每个月都可以更新该结构(元素可以重新排列或删除)(发送一个新的XSD文件)。
我有一个XML文件,但是我需要让元素按照与XSD需求相同的顺序排列。下面是我的代码,可以读取XML文件。根据我在这里的帖子,我能够循环遍历XSD文件。
我的问题是,我不能从xml文件返回一个特定的元素。我该怎么做呢?
foreach (var XSDsection in sections)
{
//Get Section Element;
string SchemaSchedule = XSDsection.Attribute("name").Value;
var SchemaSectionSchedule = XSDsection.Element(prefix + "complexType")
.Element(prefix + "sequence")
.Elements(prefix + "element");
foreach (var schemaSection in SchemaSectionSchedule)
{
//Get child element;
string schemaElement = schemaSection.Attribute("name").Value;
var XMLsectionSchedule = xDoc.Descendants(SchemaSchedule);
foreach (XElement element in xDoc.Element(SchemaSchedule).Descendants())
{
string value = element.Value; //returns value of next element;
string el = element.ToString(); //returns the next element and value from xml file;
}
}
}
我不是最擅长XML的,但我认为您可能能够做这样的事情:
foreach (var XSDsection in sections)
{
//Get Section Element;
string SchemaSchedule = XSDsection.Attribute("name").Value;
var SchemaSectionSchedule = XSDsection.Element(prefix + "complexType")
.Element(prefix + "sequence")
.Elements(prefix + "element");
foreach (var schemaSection in SchemaSectionSchedule)
{
//Get child element;
string schemaElement = schemaSection.Attribute("name").Value;
var XMLsectionSchedule = xDoc.Descendants(SchemaSchedule);
foreach (XElement element in xDoc.Element(SchemaSchedule).Descendants())
{
string value = element.Value; //returns value of next element;
string el = element.ToString(); //returns the next element and value from xml file;
if(value == myDesiredValue)
{
return element; // if you want the element, return it
}
}
}
}
注意,这将只返回第一个匹配的元素。一旦找到该元素,它将返回该元素并停止循环。