2009-08-12 4 views
0

Что я делаю, это проверка URL-адресов из моего кода. Поэтому у меня есть файл с url в нем, и я хочу посмотреть, существуют ли они или нет. Если они существуют, веб-страница содержит xml-код, в котором будет указан адрес электронной почты, который я хочу извлечь. Я обойду цикл while и в каждом случае, если url существует, xml добавляется в строку. Эта одна большая строка содержит xml-код. То, что я хочу сделать, - извлечь адрес электронной почты из этой строки с помощью xml-кода. Я не могу использовать методы в строке api, поскольку они требуют, чтобы вы указали индекс sarting, который я не знаю, поскольку он изменяется каждый раз.Как извлечь подстроку из строки в java

То, что я надеялся сделать, это поиск строки для подстроки, начинающейся с (например, «<email id>») и заканчивающейся (например, «</email id>»), и добавьте строку между этими строками в отдельную строку.

Кто-нибудь знает, возможно ли это, или если есть более простой/отличный способ делать то, что я хочу делать?

Спасибо.

ответ

3

Чтобы ответить на интересующий вас вопрос: .indexOf или регулярные выражения.

Но после краткого обзора вашего вопроса вы действительно должны правильно обрабатывать документ XML.

0

Вы пытаетесь использовать Regex? Вероятно, образец документа будет очень полезен для такого рода вопросов.

2

Регулярное выражение, которое будет найти и вернуть строки между двумя "символами:.

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

private final static Pattern pattern = Pattern.compile("\"(.*?)\""); 

private void doStuffWithStringsBetweenQuotes(String source) { 
    Matcher matcher = pattern.matcher(source); 
    while (matcher.find()) { 
     String match = matcher.group(1); 
    } 
} 
0

ЗАКАНЧИВАТЬ org.xml.sax API очень проста в использовании и позволяет анализировать с помощью XML и сделать что бы вы ни захотели с содержимым, когда бы вы ни попадали, что бы вы ни интересовались, поэтому вы можете легко добавить логику, чтобы искать электронную почту> стартовые элементы, а затем сохранить содержимое (символы), которое будет содержать ваш адрес электронной почты.

4

Если вы знаете а также структуру документа XML, я рекомендую использовать XPath.

Например, с электронной почтой, содержащейся в < электронной почты > [email protected] </электронной почта >, там будет запрос XPath, как/корень/электронной почты (в зависимости от структуры XML)

При выполнении этого запроса XPath в вашем XML-файле вы автоматически получите все <email> элемент (Node), возвращенный в массив. И если у вас есть элемент XML, у вас есть XML-контент. (#getNodeValue)

0

Если я правильно понимаю ваш вопрос вы извлекая куски XML из нескольких веб-страниц и конкатенации их в большую строку «XML»,

то, что выглядит как

 

"<somedata>blah</somedata> 
<email>[email protected]</email> 
<somedata>blah</somedata> 
<somedata>blah</somedata> 
<email>[email protected]</email> 
<somedata>blah</somedata> 
<somedata>blah</somedata> 
<email>[email protected]</email> 
<somedata>blah</somedata> 
<somedata>blah</somedata> 
" 
 

I 'd советую сделать это несколько допустимым XML-документом, включив в него корневой элемент.

 

" <?xml version="1.0" encoding="ISO-8859-1"?> <newRoot> <somedata>blah</somedata> <email>[email protected]</email> <somedata>blah</somedata> <somedata>blah</somedata> <email>[email protected]</email> <somedata>blah</somedata> <somedata>blah</somedata> <email>[email protected]</email> <somedata>blah</somedata> <somedata>blah</somedata> </newroot>"

Затем вы можете загрузить его в объект Xml Document и может использовать Xpath выражения для извлечения узлов электронной почты и их значения.

Если вы не хотите этого делать, можете использовать метод indexOf(String str, int fromIndex), чтобы найти <email> и </email> (или что бы там ни называлось). а затем подстрока на основе этих. Это не особенно чистый или легко читаемый способ сделать это.

Смежные вопросы