2013-07-03 3 views
0

그래서 여기에서 이미 도움을 받았으므로 다시 시도하지 않는 것이 좋습니다.? 어떤 제안이라도 대단히 감사하겠습니다.HTTP XML 응답에서 요소 추출 - HTTP 클라이언트 및 Java

HTTP 클라이언트를 사용 중이며 POST 요청을하고 있습니다. 응답은 다음과 같이 보이는 XML 본체 : 이제

<?xml version="1.0" encoding="UTF-8"?> 
<CartLink 
    xmlns="http://api.gsicommerce.com/schema/ews/1.0"> 
    <Name>vSisFfYlAPwAAAE_CPBZ3qYh</Name> 
    <Uri>carts/vSisFfYlAPwAAAE_CPBZ3qYh</Uri> 
</CartLink> 

...

나는이 HttpEntity 그런

[HttpResponse].getEntity(). 

내가 응답의 String 표현을 얻을이다 (이 경우 XML입니다.)

이 p에 대한 제안을 다음과 같이 시도했습니다. ost : How to create a XML object from String in Java?하지만 그것은 나를 위해 작동하지 않았다. 내가 문서를 만들었을 때 여전히 null로 보였다.

MY END 목표는 여기에 NAME 필드를 가져 오는 것입니다. 즉, "vSisFfYlAPwAAAE_CPBZ3qYh"부분입니다. 그래서 나는 문서를 만들고 그것을 추출하고 싶습니다 ...? 아니면 더 간단한 방법이 있습니까? 나는 다른 것들을 시도해 왔고 나는 그것을 작동시킬 수없는 것처럼 보입니다.

모든 도움 주셔서 감사합니다.

답변

1

문자열 조작으로 값을 추출하는 대신 Java의 inbuilt 기능을 사용하여 XML을 구문 분석하십시오. 그것은 훨씬 더 나은 접근법입니다. Http Components는 응답을 XML 형식으로 반환합니다. 이유가 있습니다.

// Parse the response using DocumentBuilder so you can get at elements easily 
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
    Document doc = docBuilder.parse(response); 
    Element root = doc.getDocumentElement(); 
    // Now let's say you have not one, but 'n' nodes that contain the value 
    // you're looking for. Use NodeList to get a list of all those nodes and just 
    // pull out the tag/attribute's value you want. 
    NodeList nameNodesList = doc.getElementsByTagName("Name"); 
    ArrayList<String> nameValues = null; 
    // Now iterate through the Nodelist to get the values you want. 
    for (int i=0; i<nameNodesList.getLength(); i++){ 
     nameValues.add(nameNodesList.item(i).getTextContent()); 
    } 

ArrayList에 "nameValues는"지금 "이름"태그에 포함 된 모든 단일 값을 보유 할 : :)

는 여기에 귀하의 문제를 해결하는 한 가지 방법은 아마. 노드의 키 값 쌍과 각각의 텍스트 내용을 저장할 HashMap을 만들 수도 있습니다.

희망이 도움이됩니다.