【问题标题】:dumping XML data to MySQL将 XML 数据转储到 MySQL
【发布时间】:2010-11-23 04:50:42
【问题描述】:

我想解析以下 XML 文本并将值保存在 MySQL 数据库中。最好的方法是什么?

<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>

【问题讨论】:

  • @shantanuo - 预期的格式是什么?并且更喜欢编程语言?
  • MySQL 插入语句。 PHP 或 JAVA
  • 您的架构看起来像...?你想保持什么价值观?
  • 消息 ID 9999 和问号 ? .表中只有 2 列。
  • 您必须解析 XML 以返回 messageID 和 instCode,然后将它们插入 DB。谷歌一下,我相信你会明白的。

标签: java php mysql xml soap


【解决方案1】:

忽略 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多