Android的DOM对象字符串
我基本上与我的DOM对象与我想要的数据坚持,我试图将其输出到字符串。在这里我在这里使用解析我的XML文件中的代码:Android的DOM对象字符串
public ORGRTools insertUserNameAndPassword(String userName, String password)
{
try {
DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
docBuilder = factory.newDocumentBuilder();
dom = docBuilder.parse (new File("/mnt/sdcard/Commands.xml"));
NodeList items = dom.getElementsByTagName("login");
for (int i = 0; i < items.getLength(); i++) {
Node item = items.item(i);
NodeList properties = item.getChildNodes();
for (int j = 0; j < properties.getLength(); j++) {
Node property = properties.item(j);
String name = property.getNodeName();
if (name.equalsIgnoreCase("userName")) {
property.getFirstChild().setNodeValue(userName);
}
if (name.equalsIgnoreCase("password")) {
property.getFirstChild().setNodeValue(password);
}
}
}
} catch (SAXException e) {
// TODO Auto-generated catch block
//invalid character in xml
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return this;
}
话虽这么说,我有以下功能使用该成员变量DOM从上面的前面的代码,试图得到它的字符串表示:
public String serialize()
{
try
{
DOMSource domSource = new DOMSource(dom);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
String retVal= writer.toString();
return retVal;
}
catch(TransformerException ex)
{
//exception here but does not print stack trace... weird
ex.printStackTrace();
return null;
}
}
但是,我收到以下异常(请参阅评论)。有没有人有线索发生了什么?什么是转变为字符串失败?我一直坚持了几个小时,所以任何帮助都会很好。任何API级别都可以。
谢谢! - 编辑 - 这是我正在尝试处理的结构。基本上,这个想法是将这些模型中的一个与.apk一起安装,并让这些模型与服务器进行通信。所以,我需要填写用户证书数据:
<commands>
<login>
<userName>itemstr</userName>
<password>itemstr</password>
</login>
<analyse>
<imageName>itemstr</imageName>
<imageHeight>itemnum</imageHeight>
<imageWidth>itemnum</imageWidth>
<recordID>itemstr</recordID>
</analyse>
<retrieve>
<record>itemnum</record>
</retrieve>
参考简单的XML框架,它会更容易与XML序列化反对作品。
下面是示例说明ü有关它的用途...
序列化的简单对象 为了序列化对象到XML一系列的注释必须放在该对象之内。这些注释告诉persister如何对象序列化。例如,参加下面的课程。这里有三种不同的注释,一种用于描述根元素的名称,一种描述XML消息元素,以及一种id属性的最终注释。
@Root
public class Example {
@Element
private String text;
@Attribute
private int index;
public Example() {
super();
}
public Example(String text, int index) {
this.text = text;
this.index = index;
}
public String getMessage() {
return text;
}
public int getId() {
return index;
}
}
要序列化上述对象的实例Persister是必需的。 persister对象然后被赋予一个注释对象的实例和一个输出结果,这是本例中的一个文件。其他输出格式可以用persister对象来实现。
Serializer serializer = new Persister();
Example example = new Example("Example message", 123);
File result = new File("example.xml");
serializer.write(example, result);
希望这回答了乌拉圭回合的问题..
Siranjeevi,我修改了我的问题以包含我正在尝试处理的数据模型。我想我同意你的看法,我需要使用更简单的xml框架工作。你有一个好的经验吗? – roboto1986 2012-03-16 02:55:49
你尝试添加在你的另一'抓block'捕捉其他异常,看看是否打印堆栈跟踪? – iTurki 2012-03-16 02:35:38
嗨iturki,我添加了异常,但调试器仍然跳过它。任何其他想法? – roboto1986 2012-03-16 02:54:13
然后试试这个:在catch块外面移动'null return'。我不习惯返回null。这可能是问题的原因。考虑返回一个空字符串或用户定义的字符串。 – iTurki 2012-03-16 10:46:31