【发布时间】:2016-06-03 06:56:57
【问题描述】:
我正在尝试从我的机器加载 metadata.xml 文件,但它给出了类似的错误
“:”字符,十六进制值 0x3A,不能包含在名称中。
请让我帮助找到使用 XElement 加载 xml 的正确方法。
C# 代码
private static void xmlProcess()
{
string filePath = @"D:\metadata.xml";
if (System.IO.File.Exists(filePath))
{
// load xml file from destination folder
XElement document = new XElement(filePath);
var country = "IN";
var curProduct = document.Elements("country").Where(t => t.Value == country).FirstOrDefault().Parent;
}
}
XML 文件(metadata.xml)
<root version="mech5.2">
<language>en-US</language>
<provider>Provider1</provider>
<data>
<title>Engine1</title>
<vendor_id>ABC</vendor_id>
<products>
<product>
<country>IN</country>
<times>
<time>
<start_date>2017-01-15</start_date>
<end_date>2017-09-15</end_date>
</time>
</times>
</product>
</products>
</data>
</root>
为什么我会收到此错误:“':' 字符,十六进制值 0x3A,不能包含在名称中”
【问题讨论】:
-
你发布的xml很好。用记事本打开文件,确保它与您发布的文件匹配。我在任何地方都看不到冒号,这会导致您发布的错误。
-
我会将您的查询更改为以下内容:var curProduct = document.Descendants("product").Where(t => (string)t.Element("country") == country)。 FirstOrDefault();