JavaでXMLファイルを読み込み、XPathでXMLファイルの値を取得するプログラムを書いています。
・当該タグが存在していない場合
・当該タグが存在しているが値が空の場合
は区別つけることができるでしょうか。
例えば、以下のプログラムで、以下のXMLファイルを読み込ませた時、
/Control/bClass/text()
/Control/cClass/text()
の二つのXPathの評価式は同じ挙動をしているように見えます。
cClassタグが存在しないから例外を投げる、といったような挙動は作れないのでしょうか。
Java
1import javax.xml.parsers.DocumentBuilder; 2import javax.xml.parsers.DocumentBuilderFactory; 3import javax.xml.xpath.XPath; 4import javax.xml.xpath.XPathConstants; 5import javax.xml.xpath.XPathFactory; 6 7import org.w3c.dom.Document; 8 9 10public class Sample2 { 11 12 public static void main(String args[]) { 13 14 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 15 XPathFactory afactory; 16 try { 17 DocumentBuilder documentBuilder = factory.newDocumentBuilder(); 18 Document document = documentBuilder 19 .parse("/Users/(User name)/Desktop/hogehoge.xml"); 20 21 afactory = XPathFactory.newInstance(); 22 XPath xpath = afactory.newXPath(); 23 24 String a = (String) xpath.evaluate("/Control/aClass/text()", document, XPathConstants.STRING); 25 String b = (String) xpath.evaluate("/Control/bClass/text()", document, XPathConstants.STRING); 26 String c = (String) xpath.evaluate("/Control/cClass/text()", document, XPathConstants.STRING); 27 28 System.out.println(a); 29 System.out.println(b); 30 System.out.println(c); 31 32 33 } catch (Exception e) { 34 e.printStackTrace(); 35 } 36 } 37 38}
XML
1<?xml version="1.0" encoding="UTF-8"?> 2<Control> 3<aClass>TY</aClass> 4<bClass /> 5</Control>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/09 01:49