私は基本的に、必要なデータを含むDOMオブジェクトにこだわっており、それを文字列に出力しようとしています。ここでは、xml ファイルを解析するために使用しているコードを示します。
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 レベルでも問題ありません。
ありがとう!--編集-- これが私が処理しようとしている構造です。基本的には、これらのモデルの 1 つを .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>