我想验证 XML(在 String 对象中)是否格式正确。像这样:
"<root> Hello StackOverflow! <a> Something here </a> Goodbye StackOverflow </root>"
它还应该验证属性,但我现在有点太远了。我只是想确保我的逻辑是正确的。这是我到目前为止所得到的,但我被困住了,我需要一些帮助。
public boolean isWellFormed( String str )
{
boolean retorno = true;
if ( str == null )
{
throw new NullPointerException();
}
else
{
this.chopTheElements( str );
this.chopTags();
}
return retorno;
}
private void chopTags()
{
for ( String element : this.elements )
{
this.tags.add( element.substring( 1, element.length()-1 ) );
}
}
public void chopTheElements( String str )
{
for ( int i = 0; i < str.length(); i++ )
{
if ( str.charAt( i ) == '<' )
{
elements.add( getNextToken( str.substring( i ) ) );
}
}
}
private String getNextToken( String str )
{
String retStr = "";
if ( str.indexOf( ">" ) != -1 )
{
retStr = str.substring( 0, str.indexOf( ">" ) + 1 );
}
return retStr;
}
到目前为止,我在一个列表中切割了像“”这样的元素,然后在另一个列表中切割了标签,如下所示:root,/root。
但我不知道如何进行,或者我是否朝着正确的方向前进。我被指派在没有正则表达式的情况下解决这个问题。
有什么建议吗?我在这里迷路了。谢谢。