Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Android XPath HTML解析,比如TFHpple(我有一个10行的Obj-C实现,可以';t翻译)_Android_Xml_Xpath_Html Parsing - Fatal编程技术网

Android XPath HTML解析,比如TFHpple(我有一个10行的Obj-C实现,可以';t翻译)

Android XPath HTML解析,比如TFHpple(我有一个10行的Obj-C实现,可以';t翻译),android,xml,xpath,html-parsing,Android,Xml,Xpath,Html Parsing,2天前,我编写了这个objective-c代码,从一个完全按照预期工作的网站中提取文本。现在我不知道如何在Android上实现这一点。Android真的很奇怪 每个人发布的某些XPath代码与HTML文件不兼容(只接受标准XML) JSoup(可以处理HTML)不能转换成Xpath 总而言之,我现在正在绕圈子 基本上,我需要的是从特定URL的html文件中获取//h2/a周围的元素请看一看我写的obj-c实现,它实际上有10行工作代码,但我想不出在Android中实现同样的功能的方法。 -(

2天前,我编写了这个objective-c代码,从一个完全按照预期工作的网站中提取文本。现在我不知道如何在Android上实现这一点。Android真的很奇怪

  • 每个人发布的某些XPath代码与HTML文件不兼容(只接受标准XML)
  • JSoup(可以处理HTML)不能转换成Xpath
  • 总而言之,我现在正在绕圈子
基本上,我需要的是从特定URL的html文件中获取
//h2/a
周围的元素请看一看我写的obj-c实现,它实际上有10行工作代码,但我想不出在Android中实现同样的功能的方法。

-(void)loadTutorials:(NSString*)startURLS {

NSURL *tutorialsUrl = [NSURL URLWithString:startURLS];
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl];
TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData];

NSString *tutorialsXpathQueryString = @"//h2/a";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];

NSString *podcastTitles[99];

int jjj=0;
for (NSString *string in tutorialsNodes) {
    podcastTitles[jjj]=[[[tutorialsNodes[jjj] firstChild] content] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    NSLog(@"%@",podcastTitles[jjj]); //WORKING PERFECTLY FINE
    jjj++;
    }
}

让它工作起来,关键是坚持使用XPathFactory,但为它提供一个
HTMLCleaner
清理过的HTML。不幸的是,我找不到让我走上正轨的答案,所以今天没有学分,但希望我能再次偶然发现它

Idk这些行中有多少行是必需的,我永远不会清理这些代码,但这个块现在对我有用

HtmlCleaner cleaner = new HtmlCleaner();
                CleanerProperties props = cleaner.getProperties();
                props.setAllowHtmlInsideAttributes(true);
                props.setAllowMultiWordAttributes(true);
                props.setRecognizeUnicodeChars(true);
                props.setOmitComments(true);


                TagNode tagNode = new HtmlCleaner().clean(
                        websiteContent);
                org.w3c.dom.Document doc = new DomSerializer(
                        new CleanerProperties()).createDOM(tagNode);

                XPath xpath = XPathFactory.newInstance().newXPath();
                NodeList titleNodes = (NodeList) xpath.evaluate("//h2/a",
                        doc, XPathConstants.NODESET);
                System.out.println("iii"+titleNodes);

                for(int i=0; i<titleNodes.getLength();i++){
                    System.out.println("t t t"+titleNodes.item(i).getTextContent()); //WORKING
                }
HtmlCleaner cleaner=新的HtmlCleaner();
CleanerProperties props=cleaner.getProperties();
props.setAllowtmlinsideAttributes(true);
props.setAllowMultiWordAttributes(true);
道具。设置识别Unicodechars(真);
props.setomit注释(true);
TagNode TagNode=new HtmlCleaner().clean(
网站内容);
org.w3c.dom.Document doc=新的DomSerializer(
新的CleanerProperties()).createDOM(tagNode);
XPath=XPathFactory.newInstance().newXPath();
NodeList titleNodes=(NodeList)xpath.evaluate(“//h2/a”,
doc,XPathConstants.NODESET);
系统输出打印项次(“iii”+标题节点);
对于(int i=0;i