Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从xml文件中获取字符串_C#_Linq To Xml - Fatal编程技术网

C# 从xml文件中获取字符串

C# 从xml文件中获取字符串,c#,linq-to-xml,C#,Linq To Xml,我有一个coode正在尝试获取url所在的xml文件的id 我的代码 public static string GetPageIdByUrl(string url) { string folder = HttpContext.Current.Server.MapPath("/App_Data/Pages/" + Path.DirectorySeparatorChar); foreach (string file in Directory.GetFiles(folder,

我有一个coode正在尝试获取url所在的xml文件的id

我的代码

    public static string GetPageIdByUrl(string url)
{
    string folder = HttpContext.Current.Server.MapPath("/App_Data/Pages/" + Path.DirectorySeparatorChar);
    foreach (string file in Directory.GetFiles(folder, "*.xml", SearchOption.TopDirectoryOnly))
    {
        var xml = XDocument.Load(file);

        var q = from f in xml.Descendants("Page")
                where (string)f.Element("Url").Value == url
                select (string)f.Attribute("Id").Value;

        if (q.Count() != 0)
        {
            return q.SingleOrDefault();
        }
    }

    return null;
 }
我得到这个错误:

对象引用未设置为对象的实例。 行:选择f.AttributeId.Value

如果测试存在于xml文件测试中,我希望它返回属性ID。但sems仅适用于第一个xml文件


希望您能解决这个问题。

尝试发布一些示例XML


我猜您的Url元素没有Id精确拼写属性。因此,XNode为null,无法提供值。

尝试发布一些示例XML

我猜您的Url元素没有Id精确拼写属性。因此,XNode为null,无法提供值。

Id是Url元素上的属性吗

请注意,当使用类型转换作为XElement和XAttribute定义对各种基类型的类型转换时,可以省略.Value。这通常是意外的NullReferenceException的来源。

Id是Url元素上的属性吗


请注意,当使用类型转换作为XElement和XAttribute定义对各种基类型的类型转换时,可以省略.Value。这通常是意外的NullReferenceException的来源。

我今天提到的问题是,在xml文件中,属性是calld id而不是id。

我今天提到的问题是,在xml文件中,属性是calld id而不是id。

您考虑过改用XPath吗

我已经有一段时间没有使用语法了,但是查询应该类似于以下内容:

/页面[Url='THE_STRING']


使用SelectNodes,您应该得到一个适合您的查询的节点列表,以及可以从中获取属性值的节点列表。

您考虑过改用XPath吗

我已经有一段时间没有使用语法了,但是查询应该类似于以下内容:

/页面[Url='THE_STRING']


使用SelectNodes,您应该获得一个适合查询的节点列表,以及可以从中获取属性值的节点列表。

您应该在原始问题而不是新答案中将其设置为and EDIT:。您应该在原始问题而不是新答案中将其设置为and EDIT:。
<Pages>
    <Page><Url Id="6428">http://www.example.com/</Url></Page>
</Pages>
var q = from f in xml.Descendants("Page")
        where (string)f.Element("Url") == url
        select (string)f.Element("Url").Attribute("Id");