用于查找属性元素的Java代码

时间:2013-11-16 05:50:35

标签: java string

我正在编写一个java代码,用于查找XML中任何属性(attr)Ex。 description 的元素Ex。 food

我做了什么

我将attr的第一个char作为起始位置,然后检查它是否等于“<”从这一点开始我循环忽略空格,制表符等并继续追加有效的字符,直到我找到另一个空格,tab。但这不起作用。它应该找到“<”之后的第一个单词。并且仅打印。但它实际上直到结束时它在“<”之后找到第一个字符

注意:我不能使用DOM等XML解析器

XML
<breakfast_menu>
    <food name="Belgian Waffles" price="$5.95" discount="20"
        description="Two" calories="650" />
</breakfast_menu>


for (int k = start_position; k >= 0; k--) {
    char testChar = xmlInString.charAt(k);
    String temp = Character.toString(testChar);
    if ("<".equals(temp)) {
        System.out.println(k + "value of k");
        for (int j = k + 1; j >= 0; j++) {
            char appendChar = xmlInString.charAt(j);
            String temp1 = Character.toString(appendChar);
            if(!("".equals(temp1))) {
                System.out.println(j + "    " + appendChar);
            }


        }
    }

}

我现在做了一些改动,并按预期工作。在“&lt;”之后给出第一个字。如果您有任何建议,请告诉我。

int k, j, l;

for (k = start_position; k >= 0; k--) {
    char testChar = xmlInString.charAt(k);
    String temp = Character.toString(testChar);
    if ("<".equals(temp)) {
        break;
    }

}
for (j = k + 1; j <= start_position; j++) {
    char appendChar = xmlInString.charAt(j);
    String temp1 = Character.toString(appendChar);
    if (!("".equals(temp1))) {
        break;

    }
}

for (l = j; l <= start_position; l++) {
    char appendChar1 = xmlInString.charAt(l);
    String temp2 = Character.toString(appendChar1);
    if (" ".equals(temp2)) {
        break;
    }

}

System.out.println(xmlInString.substring(j, l));

2 个答案:

答案 0 :(得分:0)

我认为这会有所帮助

String str = "<food name=\"Belgian Waffles\" price=\"$5.95\" discount=\"20\"\n" ;
       String res = str.substring(str.indexOf("<"), str.indexOf(" ", str.indexOf("<") + "<".length()) + " ".length());
        System.out.println(res);

<强>输出

<food 

答案 1 :(得分:0)

你内在的while循环for (int j = k + 1; j >= 0; j++) {被打破了。条件j >= 0没有意义 - j只增加,所以它怎么可能&lt; 0?相反,你应该寻找下一个空格,标签等。

我认为你的解决方案不会起作用,但这就是你发布的代码以及为什么它会在最后运行时出错。