2013-12-11 34 views
0

我在的XPath查詢到Java相當新的,我有以下問題:如何在Java中使用XPath查詢選擇元素的屬性值並將其放入String中?

我有一個org.jdom.Document中documentXML變量,它包含以下XML內容:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <status> 
    <id>0</id> 
    <message>Operazione conclusa con successo</message> 
    </status> 
    <drivers> 
    <drive id="MyID"> 
     <propery1 /> 
     <property2 /> 
     <property3 /> 
     <property4>0</property4> 
     <sproperty5>104857600</property5> 
     <property6 /> 
    </drive> 
    </drivers> 
</root> 

我必須選擇id屬性中的值並將其放入一個字符串中(所以我必須將「MyID」值放入一個字符串中)

在Java中,我hav E要這樣的事情(不工作):

org.jdom.output.XMLOutputter xmlOutputterCDATAContent = new org.jdom.output.XMLOutputter(org.jdom.output.Format.getPrettyFormat()); 

xmlOutputter.output(documentXML, System.out); 

xPath = XPath.newInstance("/root/drivers/drive/@id"); 
objectElement = (Element) xPath.selectSingleNode(documentXML); 
driveId = objectElement.getValue(); 
System.out.println("ID " + objectElement.getValue() + " /ID"); 

所以,你可以看到documentXML變量包含以前的XML代碼

我創建XPath查詢來訪問驅動節點的id屬性的值,然後我嘗試把該數值到驅動器Id(這是一個String對象)

但這種方式不能工作的d當我運行此代碼時,我獲得以下錯誤消息:

java.lang.ClassCastException: org.jdom.Attribute cannot be cast to org.jdom.Element 

問題是什麼?我錯過了什麼?我該如何解決?

TNX

安德烈

+1

那麼「MyID」是一個屬性不是一個元素,所以我認爲你做錯了演員。 – gtgaxiola

回答

0

您可以使用jcabi-xml和一行做到這一點:

String id = new XMLDocument(xml).xpath("/root/drivers/drive/@id").get(0); 
+0

我不能使用其他librrary ... – AndreaNobili

1

就像你已經提到的,你想要得到的ID是屬性

因此,你只需要將你的演員從org.jdom.Element更改爲org.jdom.Attribute。 然後,您可以撥打driveId.getValue()以獲取id的字符串值。

相關問題