2016-08-18 3 views
1

자바 파일에서 XML 파일의 일부 매개 변수를 수정하려고합니다. 모든 게시물에서 사람들이 태그 이름으로 검색 할 때 이러한 매개 변수를 수정하지만 내 경우에는 작동하지 않습니다.java를 사용하여 xml 노드 값을 수정하는 방법? (태그 이름이 아님)

내 xml 파일의 예는 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?> 
<comp> 
    <params> 
     <param name="id">1</param> 
     <param name="type">aaaa</param> 
     <param name="bus">123</param> 
    </params> 
</comp> 

내가 "이름"에 의해 매개 변수에 액세스 할 수 있습니까?

마지막으로 자바에서 내 코드는 다음과 같습니다

public void modifyXml(){ 
    String path = "C:\\Workspace\\Project\\data.xml"; 
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
    Document doc = docBuilder.parse(path); 
    Node comp = doc.getFirstChild(); 
    Node params = doc.getElementsByTagName("params").item(0); 
    loadParams(params); 
} 

private void loadParams(Node params) { 
    NodeList list = params.getChildNodes(); 
    for (int i = 0; i < list.getLength(); i++) { 
     Node url = list.item(i); 
     String nodeName = url.getNodeName(); 
     NamedNodeMap attributes = url.getAttributes(); 

     //System.out.println(attributes.item(i)); 
     if (nodeName.equalsIgnoreCase("param") && url.getFirstChild()!=null) { 
      ServerProperties.getExternalParamsMap().put(attributes.getNamedItem("name").getNodeValue(), url.getFirstChild().getNodeValue()); 
      System.out.println((String) url.getFirstChild().getNodeName()); 
      System.out.println(url.getFirstChild().getNodeValue()); 
     } 
    } 
} 

그것은 나에게 노드의 값을 출력하지만 매개 변수 이름. 매개 변수 이름은 다음과 같이 표시됩니다. "#text"

고마워요!

감사합니다.

에릭 P.는

+1

는 DOM 손으로 그것을 기록하지 마십시오 "ID"매개 변수를 수정합니다

String path = "C:\\Workspace\\Project\\data.xml"; File file = new File(path); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory .newInstance(); javax.xml.parsers.DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.parse(file); Node id = (Node) document.getElementsByTagName("param").item(0); id.setTextContent("xxxxxxx"); System.out.println(usr.getTextContent()); 

. XPath를 다음 표현식과 함께 사용하십시오 :'// param [@ name = "id"]','// param [@ name = "type"]','// param [@ name = "bus"]'등. – EJP

답변

1

아래 ... 코딩을 단순화하기 위해 XPath를 사용 XPath와 VTD-XML을 기반으로 코드입니다한다.

import com.ximpleware.*; 

public class accessName { 

    public static void main(String[] args) throws VTDException{ 
     VTDGen vg = new VTDGen(); 
     if (!vg.parseFile("input.xml", false)) 
      return; 
     VTDNav vn = vg.getNav(); 
     AutoPilot ap = new AutoPilot(vn); 
     ap.selectXPath("/param[@name='id']/text()"); 
     int i=0; 
     while((i=ap.evalXPath())!=-1){ 
      System.out.println("text value "+vn.toString(i)); 
     } 
    } 
} 
+0

감사합니다 !! 나는 VDT 대신에 "doc"로 시도 할 것이다. – Eric

0

는 지금은 나를 위해 작동 :이

관련 문제