天天看点

java html 字体调解_java – HTML格式化文本

是否有任何类似于Html.fromHtml()的Java API在Android中执行? JSoup确实解析并删除了标签,但输出不是格式化的.

例如:

  1. Test1
    1. TestA1
    2. TestB1
  2. Test2
    1. TestA2
    2. TestB2

应该给我一些类似的东西

>测试1

一个. TestA1

湾TestB1

>测试2

一个. TestA2

湾TestB2

解决方法:

jsoup到“格式化文本”没有api,但您可以自己转换列表:

>遍历ul / ol元素的所有子元素,这是列表的根

> if item:format并添加输出String

> if sublist:do 1. – 但是使用sublist元素 – 并添加结果

例:

在这个例子中,我使用type属性来确定需要什么类型的项目符号,并使用字符(!)来索引项目.如果没有合适的属性,则使用char 1.

执行:

public String createList(Element root, int depth)

{

final String indentation = createIndentation(depth); // create indentation

StringBuilder sb = new StringBuilder();

final String typeAttr = root.attr("type"); // Get the character used as bullet (= 'type' attribute)

char type = typeAttr.isEmpty() ? '1' : typeAttr.charAt(0); // if 'type' attribute: use it, else: use '1' instead

for( Element sub : root.children() ) // Iterate over all Childs

{

// If Java < 7: use if/else if/else here

switch( sub.tagName() ) // Check if the element is an item or a sublist

{

case "li": // Listitem, format and append

sb.append(indentation).append(type++).append(". ").append(sub.ownText()).append("\n");

break;

case "ol": // Sublist

case "ul":

if( !sub.children().isEmpty() ) // If sublist is not empty (contains furhter items)

{

sb.append(createList(sub, depth + 1)); // Recursive call for the sublist

}

break;

default: // "Illegal" tag, do furhter processing if required - output as an example here

System.err.println("Not implemented tag: " + sub.tagName());

}

}

return sb.toString(); // Return the formated List

}

private String createIndentation(int length)

{

StringBuilder sb = new StringBuilder(length);

for( int i=0; i

{

sb.append(' ');

}

return sb.toString();

}

Testcode:

Document doc = ... // Load / parse your document here

Element listRoot = doc.select("ol").first(); // Select the root-element (!) of the list here.

final String output = createList(listRoot, 0); // Convert the list

System.out.println(output); // Ouput

结果:

输入(HTML):

Test1

  1. TestA1
  2. TestB1

Test2

  1. TestA2
  2. TestB2

输出:

1. Test1

a. TestA1

b. TestB1

2. Test2

a. TestA2

b. TestB2

而已!

标签:java,android,jsoup,html

来源: https://codeday.me/bug/20190709/1416450.html