我对 XML 和 LINQ 都很陌生。我已经阅读了几篇 XML to LINQ 教程,但似乎没有一个 XML 文档按照我的方式格式化。我不确定它是否(以及如何)改变了事情。
我在互联网上阅读的所有示例似乎都遵循这种格式:
<data>
<row>
<Term>201320</Term>
<Subj>ACCT</Subj>
<Subj_desc>Accounting</Subj_desc>
</row>
<row>
<Term>201320</Term>
<Subj>ACCT</Subj>
<Subj_desc>Accounting</Subj_desc>
</row>
</data>
如果我想阅读,我认为代码看起来像这样:
XDocument document = XDocument.Load("URLHERE.xml");
var term = from row in document.Descendants("row")
select new
{
Term = row.Element("Term").Value,
Subject = row.Element("Subj").Value,
Subject_Description = row.Element("Subj_desc").Value,
};
这就是问题所在:我的 XML 文档没有遵循相同的格式。它不是为每个术语重复不同的标签,而是在顶部有一组元数据,然后对每组数据使用相同的标签。
这是我的 XML 文档的示例:
<metadata>
<item name="TERM" type="xs:string" length="128"/>
<item name="SUBJ" type="xs:string" length="128"/>
<item name="SUBJECT_DESC" type="xs:string" length="512"/>
</metadata>
<data>
<row>
<value>201320</value>
<value>ACCT</value>
<value>Accounting</value>
</row>
<row>
<value>201320</value>
<value>ACCT</value>
<value>Accounting</value>
</row>
</data>
我将如何从中提取数据?
var term = from row in document.Descendants("row")
select new
{
Term = row.Element("value").Value,
Subject = row.Element("value").Value,
};
似乎不对。我正在使用 C# BTW(不确定我是否需要这么说或者标签是否足够)。