我正在做的是验证代码中的网址。所以我有一个带有url的文件,我想知道它们是否存在。如果它们存在,则网页包含xml代码,其中将有一个我想要提取的电子邮件地址。 我绕了一个while循环,在每个实例中,如果url存在,则将xml添加到字符串中。这个大字符串包含xml代码。我想要做的是从该字符串中提取电子邮件地址,其中包含xml代码。我不能使用字符串api中的方法,因为它们要求您指定我不知道的sarting索引,因为它每次都会变化。
我希望做的是在字符串中搜索以(例如“<email id>
”)开头并以(例如“</email id>
”)结尾的子字符串并在这些字符串之间添加字符串分开的字符串。
有谁知道这是否可行,或者是否有更容易/不同的方式做我想做的事情?
感谢。
答案 0 :(得分:4)
如果您熟悉XML文档的结构,我建议您使用XPath。
例如,对于&lt; email&gt; a@b.com< / email&gt;中包含的电子邮件,会有一个XPath请求,例如/ root / email(取决于您的xml结构)
通过在XML文件上执行此XPath查询,您将自动获得所有&lt; email&gt;元素(Node)在数组中返回。如果您有XML元素,那么您就拥有了XML内容。 (#getNodeValue)
答案 1 :(得分:3)
回答你的主题问题:.indexOf,或正则表达式。
但在对您的问题进行简要回顾之后,您应该真正正确地处理XML文档。
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
您是否尝试使用正则表达式?对于这类问题,示例文档可能非常有用。
答案 4 :(得分:0)
查看org.xml.sax API。它非常易于使用,并且允许您解析XML并在遇到任何感兴趣的内容时对内容执行任何操作。所以你可以轻松添加一些逻辑来寻找&lt;电子邮件&gt;启动元素,然后保存将包含您的电子邮件地址的内容(字符)。
答案 5 :(得分:0)
如果我正确理解您的问题,您将从多个网页中提取XML并将它们连接成一个大的“xml”字符串,
看起来像的东西
"<somedata
>blah</somedata
>
<email
>a.b@c.com</email
>
<somedata
>blah</somedata
>
<somedata
>blah</somedata
>
<email
>a.c@c.com</email
>
<somedata
>blah</somedata
>
<somedata
>blah</somedata
>
<email
>a.d@c.com</email
>
<somedata
>blah</somedata
>
<somedata
>blah</somedata
>
"
我建议通过包含根元素来使它成为一个有效的xml文档。
<somedata
</somedata
然后您可以将其加载到Xml Document对象中,并可以使用Xpath表达式来提取电子邮件节点及其值。
如果您不想这样做,可以使用<email
方法查找</email
&gt;和<somedata
&gt; (或称其他任何职位)职位。然后基于那些子串。尽管如此,这并不是一种特别干净或易于理解的方式。