Я не могу удалить пробел, когда получить значение из XML с помощью node.getTextContent () - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть файл конфигурации xml, который мы проанализировали с помощью DOM parser.when, когда я получаю значение из childnode с помощью node.getTextContent (); я не могу удалить пробел в строке value.it работает, когда я даю значение без пробела.но я тоже должен обработать отрицательный сценарий.

Я пробовал trim (), replaceAll ("\ s", "") и replaceAll ("\ u00A0", ""), но у меня ничего не получалось

 NodeList serviceAddrNodeList=serviceAddressesNode.getChildNodes();

 packetSendingIplist =new ArrayList();

 for (int l = 0; l < serviceAddrNodeList.getLength(); l++) {

   Node serviceAddrNode=serviceAddrNodeList.item(l);

   if(serviceAddrNode.getNodeType()==Node.ELEMENT_NODE){                                                                        

    String packetSendingIp = serviceAddrNode.getTextContent();                                                  
    packetSendingIp.trim(); //replaceAll("\s", "") and replaceAll("\u00A0", "")                      
    if(checkValidIp(packetSendingIp)){

      log("invalid service_addr-"+packetSendingIp+"ignoring this 
      listening point ");   
   }
 }                                                   
}

xml:

  <service_addresses>
  <!-- host1 -->
  <service_addr>172.17.1.16 </service_addr>
  <service_addr>172.17.1.17 </service_addr>
  <!-- host12-->
  <service_addr>172.17.1.32</service_addr>//works becuase no space here
  <service_addr>172.17.1.33 </service_addr>    
</service_addresses>

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

попробуйте с этим

File fXmlFile = new File("your xml file path");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
NodeList nodeList = doc.getElementsByTagName("service_addr");
   for(int i = 0; i < nodeList.getLength(); i++) {
      System.out.println(nodeList.item(i).getTextContent().trim());
   }

выводом без пробелов

172.17.1.16
172.17.1.17
172.17.1.32
172.17.1.33
0 голосов
/ 24 декабря 2018

Вы не можете сделать Trim () таким образом.Вы должны снова присвоить этот вывод переменной, потому что после того, что вы делаете, он будет иметь то же значение.Добавьте обрезку к этой линии, и она должна работать как положено.

String packetSendingIp = serviceAddrNode.getTextContent().trim()
0 голосов
/ 21 декабря 2018

Вы можете удалить все пробелы в начале и конце содержимого с помощью регулярного выражения:

public class Main {

    public static final String DEST = "html_1.pdf";
    private static final String WHITESPACE_REGEX = "(^( )*|( )*$)";

    public static void main(String[] args) throws Exception {
        Assert.assertEquals(" 192.168.1.1 ".replaceAll(WHITESPACE_REGEX, StringUtils.EMPTY), "192.168.1.1");
        Assert.assertEquals("     192.168.1.1 ".replaceAll(WHITESPACE_REGEX, StringUtils.EMPTY), "192.168.1.1");
        Assert.assertEquals("192.168.1.1         ".replaceAll(WHITESPACE_REGEX, StringUtils.EMPTY), "192.168.1.1");
        Assert.assertEquals("192.168.1.1".replaceAll(WHITESPACE_REGEX, StringUtils.EMPTY), "192.168.1.1");
    }
}
...