javaを使用してxmlファイルからデータを取得しようとしています。xmlファイルからJavaを使用して16進数値を読み取る方法
mysqldumpを使用すると、データベーステーブルがxmlに変換されます。
テーブルには、BLOBタイプのフィールドが1つ含まれています。
表構造:進値を持つデータまで戻る
CREATE TABLE `test` (
`image` BLOB
) ENGINE=INNODB DEFAULT CHARSET=utf8
XMLブロブフィールドの内容には、次の手順
mysqldump -uuser -ppassword test test --compact --no-create-info --hex-blob > check.sql --xml
を使用して16進数の値です。私が試した
Javaコードは
public static void main(String args[]) {
try {
File fXmlFile = new File("E:\\check.sql");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("row");
System.out.println("-----------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println(" Image " + getTagValueUsingAttributeName("field","image", eElement));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getTagValueUsingAttributeName(String sTag, String attributeName, Element eElement){
String value="";
for(int i=0;i<eElement.getElementsByTagName(sTag).getLength();i++){
if((eElement.getElementsByTagName(sTag).item(i).getAttributes().getNamedItem("name").getTextContent()).equalsIgnoreCase(attributeName)){
System.out.println(" - "+eElement.getElementsByTagName(sTag).item(i).getAttributes().getNamedItem("name").getTextContent());
NodeList nlList = eElement.getElementsByTagName(sTag).item(i).getChildNodes();
System.out.println(1);
Node nValue = (Node) nlList.item(0);
if(nValue!=null)
System.out.println(2+" - "+(nValue.getNodeType() == Node.TEXT_NODE));
value = (nValue==null)?" ":nValue.getTextContent();
break;
}
}
return value;
}
ですが、私は、解析するXMLファイルを読み込むことができません。
注: xmlファイルをstackoverflowに配置しようとしましたが、xmlコンテンツを追加できません。
私を助けてください。
コードブロックなどで適切に行う限り、XMLデータを投稿することができます。それ以外の場合、HTMLタグとして解釈され、効果的に無視されます。 –
とにかく、あなたが走っている特定の問題は何ですか? 「私は解析するためのXMLファイルを読むことができません」と言ったので、あなたが与えた情報に基づいて 'E:\ check.sql'が存在しないと結論付けることができます。また、これは16進数の権利とは関係ありません。ファイルを読む際に問題を尋ねるだけです。 –
'E:\ check.sql'はmysqldumpによって生成されたファイルです(コードタグで指定されています) – Mohan