Java 将XML数据转储到MySQL
我想解析以下XML文本并将值保存在MySQL数据库中。最好的方法是什么Java 将XML数据转储到MySQL,java,php,mysql,xml,soap,Java,Php,Mysql,Xml,Soap,我想解析以下XML文本并将值保存在MySQL数据库中。最好的方法是什么 <urn:outgoing soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <pob xsi:type="out:OutgoingTransactionRqstInfo" xmlns:out="http://www.shantanuoak.com/OutgoingService"> <mess
<urn:outgoing soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<pob xsi:type="out:OutgoingTransactionRqstInfo"
xmlns:out="http://www.shantanuoak.com/OutgoingService">
<messageID xsi:type="xsd:int">9999</messageID>
<instCode xsi:type="soapenc:string"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">?</instCode>
</pob>
</urn:outgoing>
9999
?
忽略xml文件中的所有名称空间,可以执行以下操作
class XmlToDb {
private $data = array();
private $currentTagname;
private function parseXML($xmlContent) {
$xmlParser = xml_parser_create();
xml_set_character_data_handler($xmlParser, array($this, 'contentElement'));
xml_set_element_handler( $xmlParser, array($this, "startElement"), array($this, "endElement"));
if(!xml_parse($xmlParser, $xmlContent)){
die("Error on line " . xml_get_current_line_number($xmlParser));
}
xml_parser_free($xmlParser);
}
public function save($xml) {
$this->parseXML($xml);
$sql = "INSERT INTO [table] VALUES ('" . $this->data['MESSAGEID'] . "', '" . $this->data['INSTCODE'] . "')";
echo $sql;
}
private function contentElement($parser, $data) {
$data = trim($data);
if (!empty($data)) {
$this->data[$this->currentTagname] = $data;
}
}
private function startElement( $parser, $tag, $attributeList) {
if ($tag == 'MESSAGEID') {
// @todo add specific validation to this element. e.g. make sure its valid number
} else if ($tag == 'INSTCODE') {
} else {
}
$this->currentTagname = $tag;
}
private function endElement( $parser, $tag ) {
return '';
}
}
$xmlContent= '
<urn:outgoing xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<pob xsi:type="out:OutgoingTransactionRqstInfo"
xmlns:out="http://www.shantanuoak.com/OutgoingService">
<messageID xsi:type="xsd:int">9999</messageID>
<instCode xsi:type="soapenc:string"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">?</instCode>
</pob>
</urn:outgoing>
';
$xmlToDb = new XmlToDb();
$xmlToDb->save($xmlContent);
类XmlToDb{
private$data=array();
私有$currentTagname;
私有函数parseXML($xmlContent){
$xmlParser=xml_parser_create();
xml_set_character_data_handler($xmlParser,array($this,'contentElement'));
xml_set_element_handler($xmlParser,array($this,“startElement”)、array($this,“endElement”);
if(!xml_parse($xmlParser,$xmlContent)){
die(“行上出错”。xml_获取当前行号($xmlParser));
}
xml解析器免费($xmlParser);
}
公共函数save($xml){
$this->parseXML($xml);
$sql=“插入[表格]值(“$this->data['MESSAGEID']”,“,”“$this->data['INSTCODE']”);
echo$sql;
}
私有函数contentElement($parser,$data){
$data=修剪($data);
如果(!空($data)){
$this->data[$this->currentTagname]=$data;
}
}
私有函数startElement($parser、$tag、$attributeList){
如果($tag=='MESSAGEID'){
//@todo将特定验证添加到此元素。例如,确保其有效编号
}如果($tag=='INSTCODE',则为else){
}否则{
}
$this->currentTagname=$tag;
}
私有函数endElement($parser,$tag){
返回“”;
}
}
$xmlContent='1〕
9999
?
';
$xmlToDb=新的xmlToDb();
$xmlToDb->save($xmlContent);
@shantanuo-预期的格式是什么?并且更喜欢编程语言?MySQL insert into语句。PHP或Java您的模式看起来像。。。?您希望保留哪些值?消息ID 9999和问号。表中只有2列。您必须解析XML以返回messageID&instCode,然后将它们插入数据库。搜索一下,我相信你会找到的。