HtmlAgilityPack을 사용한 어셈블리 오류

c# html-agility-pack reference windows-phone-8.1 xpath

문제

나는 웹 페이지에서 뭔가를 가져와 사용자에게 보여주는 앱을 만들고 싶다. 이 일을하기 위해서, 나는 HtmlAgilityPack을 사용했다. 프로젝트 (NuGet의 1.4.6.0 버전)에 대한 참조를 추가했으며 몇 년 전에 사용자가 다른 질문에 게시 한 코드를 사용했습니다.

            HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
            // There are various options, set as needed
            htmlDoc.OptionFixNestedTags = true;

            // filePath is a path to a file containing the html
            htmlDoc.Load(filePath);
            if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
            {
                // Handle any parse errors as required
            }
            else
            {
                if (htmlDoc.DocumentNode != null)
                {
                    HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

                    if (bodyNode != null)
                    {
                        // Do something with bodyNode
                    }
                }
            }

내 문제는 내가 다음과 같은 오류가 발생합니다 :

'System.Xml.XPath.IXPathNavigable'형식은 참조되지 않은 어셈블리에 정의되어 있습니다. 어셈블리 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'에 대한 참조를 추가해야합니다.

그래서 다음 DLL을 사용하여 참조를 추가하려고 :

c : \ Program Files (x86) \ Microsoft SDKs \ Silverlight \ v5.0 \ Libraries \ Client \ System.Xml.XPath.dll

그러나 이번에는 다음 오류가 발생합니다 (이탈리아어 오류가 발생하여 번역되었으므로 올바른 번역이 아닐 수 있습니다).

호환되지 않는 프로젝트 나 위 버전의 어셈블리에 대한 참조를 추가 할 수 없습니다

내가 무엇을 할 수 있을지?

인기 답변

Windows Phone 8.1 스토어 앱용 HtmlAgilityPack (HAP) 은 Windows 8 스토어 앱용 HAPP와 유사한 XPath를 지원하지 않는 것으로 보입니다.

이 경우 XPath API 대신 HAP의 LINQ API를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

......
if (htmlDoc.DocumentNode != null)
{
    HtmlAgilityPack.HtmlNode bodyNode = doc.DocumentNode
                                           .DescendantsAndSelf("body")
                                           .FirstOrDefault();
    if (bodyNode != null)
    {
        // Do something with bodyNode
    }
}
......

실제로 Windows Phone Silverlight 응용 프로그램 프로젝트가 있더라도 LINQ API는 여전히 가능한 해결 방법입니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow