2010-03-26 3 views
0

У меня возникла эта странная проблема синтаксического анализа XML.Проблема синтаксического анализа XML

У меня есть этот XML-строку Я пытаюсь разобрать

<?xml version="1.0"?> 
<response status="success"> 
<lot>32342</lot> 
</response> 

Я использую XPath с Java для того, чтобы сделать это. Я использую выражение Xpath «/ response/@ status», чтобы найти текст «success». Однако всякий раз, когда я оцениваю это выражение, я получаю пустую строку.

Однако я в состоянии успешно разобрать эту строку, используя «/ ответ/@ тип»

<?xml version="1.0"?> 
<response type="success"> 
<lot>32342</lot> 
</response> 

Так почему бы просто изменить название атрибута изменить возвращаемую строку ни к чему?

is = new InputSource(new StringReader(testWOcreateStrGood)); 
xPathexpressionSuccess = xPath.compile("/response/@status"); 
responseStr = xPathexpressionSuccess.evaluate(is); 

reponseStr является строкой, я отправил раньше с «статусом» атрибут

Также я объявил testWOcreateStrGood ниже

private String testWOcreateStrGood = "<?xml version=\"1.0\"?>\n" + 
          "<response status=\"success\">\n" + 
          "<lot>32342</lot>\n" + 
          "</response>"; 
+1

Можете ли вы опубликовать некоторый быстрый и грязный образец кода? Это может быть проблемой с кодом, который вы используете :) –

+0

Я добавил дополнения – Albinoswordfish

ответ

1

Так почему бы просто изменить название атрибута изменить вернуть строку ни к чему?

Не следует. Вы должны делать что-то еще неправильно, например. доступ к неправильному XML-документу или фактически не использование выражения XPath, которое вы считаете используемым.


В вашем примере кода:

Проверьте документацию API для InputSource. Вы не можете передать XML-документ в виде строки непосредственно в конструктор.

+0

В дополнение, быстрая чистка/перекомпиляция была бы хорошей идеей и проверила бы пути - возможно, выгрузите xml в System.out или журнал? – aperkins

+0

Извините, что я не скопировал свой код правильно, я его обновил – Albinoswordfish

+0

И теперь в вашем коде вы используете XPath для доступа к атрибуту «status» XML-документа с атрибутом «type». Это, конечно, не сработает. Вам нелегко помочь, если вы даже не можете задать простой вопрос, не создавая такого беспорядка. – jarnbjo

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