View Full Version : pars کردن xml با node های هم اسم
biodread
شنبه 04 خرداد 1392, 20:07 عصر
سلام
همونطور که میدونید در جاوا راه های زیادی برای pars کردن xml هست که معروف ترین آنها DOM و یا SAX هست
من یه xml دارم با این محتوا
<?xml version="1.0" encoding="UTF-8"?>
<data>
<item
label="cat"
size="SMALL">
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
</item>
<item
label="cat"
size="SMALL">
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
</item>
</data>
همونطوز که میبینید من داخل همون node یه node مثل پدرش دارم
من از هز دو روش بالا که نام بردم استفاده کردم و متاسفانه نمیشه فهمید که کدوم پدر کدوم هست
آیا راهی هست که بشه به مقادیر یه node که هم اسم با پدرانش هست در کل xml پی برد؟
منظورم با index هست - مثلا :
myXml.getNode(1).getNode(4).getValue("label")
در زبان های هایلول این کار به آسانی قابل انجام است.
ممنون میشم راهنمایی کنید
javaphantom
شنبه 04 خرداد 1392, 21:17 عصر
سلام
همونطور که میدونید در جاوا راه های زیادی برای pars کردن xml هست که معروف ترین آنها DOM و یا SAX هست
من یه xml دارم با این محتوا
<?xml version="1.0" encoding="UTF-8"?>
<data>
<item
label="cat"
size="SMALL">
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
</item>
<item
label="cat"
size="SMALL">
<item
label="cat"
size="SMALL"/>
<item
label="cat"
size="SMALL"/>
</item>
</data>
همونطوز که میبینید من داخل همون node یه node مثل پدرش دارم
من از هز دو روش بالا که نام بردم استفاده کردم و متاسفانه نمیشه فهمید که کدوم پدر کدوم هست
آیا راهی هست که بشه به مقادیر یه node که هم اسم با پدرانش هست در کل xml پی برد؟
منظورم با index هست - مثلا :
myXml.getNode(1).getNode(4).getValue("label")
در زبان های هایلول این کار به آسانی قابل انجام است.
ممنون میشم راهنمایی کنید
package com.me;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.*;
import java.io.File;
/**
* Created with IntelliJ IDEA.
* User: babak
* Date: 5/26/13
* Time: 5:34 AM
* To change this template use File | Settings | File Templates.
*/
public class MyParser {
public static void main(String[] s) throws Exception {
JAXBContext jaxbContext = JAXBContext.newInstance(Data.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Data data = (Data) unmarshaller.unmarshal(new File("/home/babak/Public/data.xml"));
System.out.println("data.getItem().getItem().getSize() = " + data.getItem().getItem().getSize());
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
class Data {
@XmlElement
private Item item;
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
class Item {
@XmlAttribute
private String label;
@XmlAttribute
private String size;
@XmlElement
private Item item;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mypos</groupId>
<artifactId>mypos</artifactId>
<version>1.0-SNAPSHOT</version>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.6</version>
</dependency>
</dependencies>
</project>
biodread
یک شنبه 05 خرداد 1392, 07:26 صبح
مرسی دوست من از پاسخ تون
من برای آندروید می خواستم
و من پکیجی به اسم javax.xml.bind پیدا نکردم
javaphantom
یک شنبه 05 خرداد 1392, 08:27 صبح
مرسی دوست من از پاسخ تون
من برای آندروید می خواستم
و من پکیجی به اسم javax.xml.bind پیدا نکردم
این قسمت، قسمت java standard هست و شما هم چیزی در پستون در مورد Android نگفته بودید.
در مورد package هم من قسمت MAVEN ی رو براتون گذاشته بودم که در کدوم jar فایل می تونید این package رو پیدا کنید.
موفق باشی
biodread
یک شنبه 05 خرداد 1392, 09:34 صبح
دوست من میشه یه توضیح راجع به MAVEN بدی؟
کجاباید باشه؟ آیا یه فایل xml هست؟
javaphantom
یک شنبه 05 خرداد 1392, 09:51 صبح
دوست من میشه یه توضیح راجع به MAVEN بدی؟
کجاباید باشه؟ آیا یه فایل xml هست؟
maven چیزه مهمی در حال حاضر در کار شما نیست. فقط در اینجا به شما این کمک رو می کنه که شما jar فایل jaxb-impl ورژن 2.2.6 رو از یک جای دانلود کنی و در مسیر classpath خودتون بزارید.
apache maven یک ابزار برای مدیریت ساخت پروژه جاوایی است.توی اینترنت می تونیند سرچ کنید.
saeed-esfandi
یک شنبه 05 خرداد 1392, 09:53 صبح
maven یه ابزار برای ساخت، مدیریت و ... پروژه های جاواست
که یه مخزن خیلی بزرگ از کتابخانه های جاوا رو داره، که وابستگی های پروژه رو به صورت خودکار چک میکنه
برای استفاده از maven میتونید از اینجا دانلود کنید http://maven.apache.org
اگه هم نخواستید با maven کار کنید میتونید کتابخانه مورد نظر را از اینجا (http://mvnrepository.com) خودتون دانلود کنید
مثلا اینجا باید jaxb-impl رو سرچ کنید ...
ولی استفاده از maven توصیه میشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.