XDocument没有找到具体的元素

时间:2018-06-18 14:04:14

标签: c# linq-to-xml

我有一个自定义函数,可以按名称获取元素。

public static XElement GetElement(this XElement element, string elementName)
{
    if (!element.HasElements)
        throw new HasNoElementsException("");

    return element.Element(element.GetDefaultNamespace() + elementName) ?? 
        throw new ElementNotFoundException("");
}

该函数正常工作,但我遇到一个特定xml文件的问题:

<?xml version="1.0" encoding="ISO-8859-1"?>
<elementA xmlns="http://www.link1.com.br">
    <elementB>
        ...other elements
    </elementB>
    <elementC xmlns="http://www.link2.com.br" schemaLocation="http://www.link1.com.br file.xsd">
        <elementD>
            ...other elements
        </elementD>
    </elementC>
</elementA>

当我尝试在xml中获取elementB时,它可以工作,但是当我尝试获取elementC时,ElementNotFoundException被抛出。

抱歉我的英语不好,巴西人在这里! :)

1 个答案:

答案 0 :(得分:1)

public static XElement GetElement(this XElement element, string elementName)
{
    if (!element.HasElements)
        throw new HasNoElementsException("");

    return element.Elements().FirstOrDefault(e => e.Name.LocalName.Equals(elementName)) ??
        throw new ElementNotFoundException("");
}

这将是一个解决方案,它获取具有指定名称的第一个元素,而不需要其默认命名空间。