-2

我正在尝试将 iOS 应用程序转换为 android。但是我几天前才开始学习Java。我正在尝试从 html 中的标签中获取值。

这是我的快速代码:

if let url = NSURL(string: "http://www.example.com/") {
        let htmlData: NSData = NSData(contentsOfURL: url)!
        let htmlParser = TFHpple(HTMLData: htmlData)


        //the value which i want to parse
        let nPrice = htmlParser.searchWithXPathQuery("//div[@class='round-border']/div[1]/div[2]") as NSArray

        let rPrice = NSMutableString()

        //Appending
        for element in nPrice {
            rPrice.appendString("\n\(element.raw)")
        }
        let raw = String(NSString(string: rPrice))

        //the value without trimming    
        let stringPrice = raw.stringByReplacingOccurrencesOfString("<[^>]+>", withString: "", options: .RegularExpressionSearch, range: nil)

        //result
        let trimPrice = stringPrice.stringByReplacingOccurrencesOfString("^\\n*", withString: "", options: .RegularExpressionSearch)
}

这是我使用 Jsoup 的 Java 代码

public class Quote extends Activity {


    TextView price;
    String tmp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quote);


        price  = (TextView) findViewById(R.id.textView3);

        try {
            doc = Jsoup.connect("http://example.com/").get();

            Element content = doc.getElementsByTag("//div[@class='round-border']/div[1]/div[2]");
        } catch (IOException e) {
            //e.printStackTrace();
        }

    }
}

我的问题如下:

  1. 每当我尝试任何代码时,我都会收到 NetworkOnMainThreatException。
  2. 我不确定在这种结构中使用 getElementByTag 是否正确。

请帮忙,谢谢。

4

1 回答 1

1
  1. 每当我尝试任何代码时,我都会收到 NetworkOnMainThreatException。

您应该使用 Volley 而不是 Jsoup。这将是一种更快、更有效的替代方案。有关一些示例代码,请参阅此答案

  1. 我不确定在这种结构中使用 getElementByTag 是否正确。
Element content = doc.getElementsByTag("//div[@class='round-border']/div[1]/div[2]");

Jsoup 不理解 xPath。它适用于 CSS 选择器。上面的代码行可以这样更正:

Elements divs = doc.select("div.round-border > div:nth-child(1) > div:nth-child(2)");

for(Element div : divs) {
    // Process each div here...
}
于 2016-05-17T08:03:39.787 回答