gpt4 book ai didi

android - Android 3.0及以上版本无法从res中获取xml数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:04 24 4
gpt4 key购买 nike

Similar issue

我保存在 res>raw>first.xml 下的一些预定义 xml 现在我在运行时获取并显示如下数据:

NodeList nodes = MainActivity.commonmethod.GetDocumentFile(ProductActivity.this,_intRowID).getElementsByTagName("string");


for (int i = 0; i < nodes.getLength(); i++) {

Element e = (Element)nodes.item(i);
e.normalize();

_ArrProductName.add( MainActivity.commonmethod.getValue(e, "string"));
}

使用文档获取XML文件(Plist文件)的方法

public Document GetDocumentFile(Context context, int rawID) {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = null;
try {
builder = builderFactory.newDocumentBuilder();

document = builder.parse(context.getResources().openRawResource(
rawID));
document.getDocumentElement().normalize();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return document;
}

getValue 方法

public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);

try {
StringWriter sw = new StringWriter();
Transformer serializer = TransformerFactory.newInstance().newTransformer();
serializer.transform(new DOMSource(n.item(0)), new StreamResult(sw));
String result = sw.toString();

System.out.println("result="+result);

} catch (Exception e) {
e.printStackTrace();
}

return CommonMethod.getElementValue(n.item(0));
}

public final static String getElementValue(Node elem) {
Node kid;
if (elem != null) {
if (elem.hasChildNodes()) {
for (kid = elem.getFirstChild(); kid != null; kid = kid
.getNextSibling()) {
if (kid.getNodeType() == Node.TEXT_NODE) {
return kid.getNodeValue();
}
}
}
}
return "";
}

test.xml

 <?xml version="1.0" encoding="UTF-8"?>

<array>
<!-- PrdocuName -->
<string>Android ICS 4.0™</string>

<!-- PrdocutDescription -->
<string>Mobile</string>

<!-- PrdocuImage -->
<string>Mobile.png</string>

<!-- PrdocuAddress -->
<string>url</string>

<!-- Conversion -->
<integer>400</integer>

<!-- ThicknessNames -->
<string>skim</string>

<!-- ThicknessValues -->
<string>1</string>

<!-- LongDescription -->
<string>Android is the market leader in terms of total number of device sold and soon it will be leader in terms of total number of application available in the market.</string>

</array>

上面的整个代码在 4.0 以下但不高于 4.0,getElementsByTagName` 在 4.0 以上返回 null 结果。

成绩低于4.0

<?xml version="1.0" encoding="UTF-8"?><string>Android ICS 4.0™</string>

成绩在4.0以上

<?xml version="1.0" encoding="UTF-8"?>

String tag 在 4.0 以上测试时丢失,

最佳答案

终于实现了,在getvalue函数里面做了改动;

更改代码:

public String getValue(Element item, String str) {


String strResponse="";
Node kid;
if(item!=null)
{
if(item.hasChildNodes())
{
for(kid=item.getFirstChild(); kid!=null; kid =kid.getNextSibling())
{
if (kid.getNodeType() == Node.TEXT_NODE) {
strResponse =kid.getNodeValue();
return strResponse;
}
}
}else
{
NodeList n = item.getElementsByTagName(str);
n = item.getChildNodes();

if(((Node) n.item(0))!=null)
{
if(((Node) n.item(0)).getNodeValue() !=null)
{
strResponse =((Node) n.item(0)).getNodeValue();
return strResponse;
}else
{
strResponse ="";
}
}


}
}


return strResponse;

}

它完美地工作!

关于android - Android 3.0及以上版本无法从res中获取xml数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com