P b*_*sak 5 java xml parsing dom sax
嗨我想获得XML中所有标签的列表,如果某些标签带有特定属性,我也想要属性的值.例如,这里有一个具体的例子,
<?xml version="1.0" encoding="utf-8"?>
<bbc.mobile.news.view.AVGalleryView android:background="@drawable/gallery_item_selector" android:padding="2.0dip" android:focusable="true" android:layout_width="139.0dip" android:layout_height="130.0dip"
xmlns:android="http://schemas.android.com/apk/res/android">
<bbc.mobile.news.view.NewsImageView android:id="@id/galleryItemView" android:background="#00000000" android:padding="0.0dip" android:layout_width="@dimen/thumbnail_width" android:layout_height="@dimen/thumbnail_height" />
<TextView android:textSize="13.0sp" android:textColor="@color/thumbnail_text" android:ellipsize="end" android:id="@id/articleTitleId" android:background="@color/thumbnail_text_bg" android:paddingLeft="5.0dip" android:paddingTop="2.0dip" android:paddingBottom="5.0dip" android:layout_width="139.0dip" android:layout_height="50.0dip" android:maxLines="2" android:layout_below="@id/galleryItemView" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/avIconView" android:background="#99000000" android:duplicateParentState="true" android:layout_width="40.0dip" android:layout_height="40.0dip" android:src="@drawable/icon_playvideo_selected" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" />
</bbc.mobile.news.view.AVGalleryView>
Run Code Online (Sandbox Code Playgroud)
我对父子关系不感兴趣,如果存在父子关系,我想迭代到最深的孩子.我还想要android:id和android:name属性值,如果存在于特定元素中.
问题是,您无法知道父子关系有多深,以及它将在xml中的位置.你之前也不知道标签名称.我可以考虑在我的代码中使用递归,但我相信有一个更简单的解决方案
P b*_*sak 15
我找到了解决方案,它非常简单,之前不知道那样getElementsByTagName("*")做,这是我的代码,
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
System.out.println("Root element " + doc.getDocumentElement().getNodeName());
NodeList nodeList=doc.getElementsByTagName("*");
for (int i=0; i<nodeList.getLength(); i++)
{
// Get element
Element element = (Element)nodeList.item(i);
System.out.println(element.getNodeName());
}
Run Code Online (Sandbox Code Playgroud)
我在这里找到了解决方案
| 归档时间: |
|
| 查看次数: |
26280 次 |
| 最近记录: |