[英]Java Sax XML Parser, parsing custom “values” within XML tags?
我之前沒有使用過很多XML,所以也許我對正確術語的無知在我搜索如何做到這一點時傷害了我。 我有下面的代碼片段,用於解析下面的XML文件。 問題是它只能在<Tag>Value</Tag>
獲取XML值,但不能獲取下面需要獲取TagValue
值的TagValue
值,在這種情況下,它將是"Russell Diamond"
。
如果有人可以提供如何獲得這樣的自定義值的幫助,我將不勝感激。 謝謝。
<Tag TagName="#Subject" TagDataType="Text" TagValue="Russell Diamond"/>
我正在使用的代碼片段:
public void printElementNames(String fileName) throws IOException {
//test write to file
FileWriter fstream = new FileWriter("/home/user/Desktop/readEDRMtest.txt");
final BufferedWriter out = new BufferedWriter(fstream);
//
try {
SAXParserFactory parserFact = SAXParserFactory.newInstance();
SAXParser parser = parserFact.newSAXParser();
System.out.println("XML Elements: ");
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String lName, String ele,
Attributes attributes) throws SAXException {
// print elements of xml
System.out.println(ele);
try {
out.write(ele);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void characters(char ch[], int start, int length)
throws SAXException {
System.out.println("Value : "
+ new String(ch, start, length));
try {
out.write("Value : "
+ new String(ch, start, length));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
您想要研究提取屬性 。 搜索,你會找到你的答案。
DefaultHandler類的startElement(...)方法傳遞一個名為attributes的參數,該參數引用一個Attribute對象。 Attribute接口的API將描述如何從此對象中提取所需的信息。
例如:
out.write(attributes.getValue("TagValue"));
這是您的代碼段的精簡版和工作版:
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAX
{
public static void main(String[] args) throws IOException {
new SAX().printElementNames("Delete.xml");
}
public void printElementNames(String fileName) throws IOException
{
try {
SAXParserFactory parserFact = SAXParserFactory.newInstance();
SAXParser parser = parserFact.newSAXParser();
DefaultHandler handler = new DefaultHandler()
{
public void startElement(String uri, String lName, String ele, Attributes attributes) throws SAXException {
System.out.println(ele);
System.out.println(attributes.getValue("TagValue"));
}
public void characters(char ch[], int start, int length) throws SAXException {
System.out.println("Value : " + new String(ch, start, length));
}
};
parser.parse(new File(fileName), handler);
}catch(Exception e){
e.printStackTrace();
}
}
}
Delete.xml
內容
<Tag TagName="#Subject" TagDataType="Text" TagValue="Russell Diamond"/>
進一步閱讀:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.