【发布时间】:2013-07-13 07:01:30
【问题描述】:
我正在尝试从通过文件浏览器提供的 XML 文件中读取,但即使我可以看到 xml 文件通过元素,值也始终为空。
public void UploadXml(Stream fileStream)
{
//Load xml
fileStream.Position = 0;
var xdoc = XElement.Load(fileStream);
IEnumerable<XElement> elements = xdoc.Elements();
var codeList = new CodeList();
foreach (var item in elements)
{
codeList.Name = item.Element("CODELIST_NAME").Value;
codeList.Description = item.Element("DESRIPTION").Value;
codeList.Version = item.Element("VERSION").Value;
codeList.EffectiveDate = DateTime.Parse(item.Element("EFFECTIVE_DATE").Value);
codeList.ExpirationDate = DateTime.Parse(item.Element("EXPIRATION_DATE").Value);
}
// save code list
// get code list ID
// create codes
}
更新 XML
<?xml version="1.0" encoding="utf-8"?>
<CONTEXT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2000/xmlns">
<CONTEXT_NAME></CONTEXT_NAME>
<CODELIST>
<CODELIST_NAME></CODELIST_NAME>
<DESRIPTION></DESRIPTION>
<VERSION></VERSION>
<USERNAME>test user</USERNAME>
<OWNER_TEAM />
<STEWARD_TEAM />
<STATUS></STATUS>
<LAST_MODIFIED></LAST_MODIFIED>
<LAST_MODIFIED_NAME></LAST_MODIFIED_NAME>
<EFFECTIVE_DATE></EFFECTIVE_DATE>
<EXPIRATION_DATE></EXPIRATION_DATE>
<FILE_TIMESTAMP></FILE_TIMESTAMP>
<CONSTRAINED_VALUE>
<CODE></CODE>
<PARENT_ID />
<NAME></NAME>
<DESCRIPTION></DESCRIPTION>
</CONSTRAINED_VALUE>
</CODELIST>
</CONTEXT>
在一个普通文件中,显然文件中会有数据,我只需要为示例删除它。
受约束的值标签将针对数据库中的行重复
【问题讨论】:
-
你能展示一个 XML 的例子吗?
-
您能粘贴一个 XML 样本吗?另请注意,
.Elements()获取 1 级的直接后代元素,而不是低于它的所有级别。使用Descendents().Where(x => x is XElement)让他们从整棵树上下来。 -
我强烈怀疑这是一个命名空间问题。另请注意,如果日期/时间值符合 XML,只需将元素转换为 DateTime。
-
此行代码抛出空异常错误 codeList.Name = item.Element("CODELIST_NAME").Value;在日期时间之前
标签: c# xml-parsing linq-to-xml xelement