将数据从HTML表单导出到XML文档中

Exporting data from an HTML form into an XML document

本文关键字:XML 文档 数据 HTML 表单      更新时间:2023-09-26

好吧,这就是我要做的。我有一个用HTML编写的表单。不过,它有一些HTML5元素。我想做的是,当用户填写所有必需的字段(用PHP和一些HTML5验证)并提交表单时,它将导出到现有的XML文件中。表单还使用AJAX在用户填写字段时进行验证,并在不重新加载页面的情况下对整个表单进行验证(提交后)。

XML文件只是一个空标记的框架,用来接收表单提交的信息,它建立在一个模式(我制作的)之上,将其限制为某些值或其他值。我还需要有一个脚本来根据模式验证新的XML值,以确保所有值都是有效的,如果不是,则返回错误消息。

XMLSchema验证尽可能接近PHP验证,并在此处和那里添加了一些字符数量限制。

如果您需要我发布XML文件的模式以便给出更具体的答案,那么我会根据请求发布。

XML框架:

    <form>
**<!-- First Name -->**
    <fname></fname>
<!-- Last Name -->
    <lname></lname>
<!-- Phone Number -->
    <phone></phone>
<!-- Email -->
    <email></email>
<!-- Website -->
    <website></website>
<!-- Subject -->
    <subject></subject>
<!-- Message -->
    <message></message>
</form>

HTML表单:

<form method="post" action="php/validator.php" name="contactform" id="contactform" autocomplete="on"> 
    <fieldset> 
        <legend>Contact Details</legend> 
        <div> 
            <label for="fname" accesskey="F">Your First Name*</label>
            <input name="fname" type="text" id="name" placeholder="Enter your first name" tabindex="1" required /> 
        </div>
        <div> 
            <label for="lname" accesskey="L">Your Last Name*</label>
            <input name="lname" type="text" id="name" placeholder="Enter your last name" tabindex="2" required /> 
        </div> 
        <div> 
            <label for="email" accesskey="E">Email*</label> 
            <input name="email" type="email" id="email" placeholder="myEmail@example.com" pattern="^[A-Za-z0-9](([_'.'-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)((['.'-]?[a-zA-Z0-9]+)*)'.([A-Za-z]{2,})$" tabindex="3" required /> 
        </div> 
        <div> 
            <label for="phone" accesskey="P">Phone <small>(optional)</small></label> 
            <input name="phone" type="tel" id="phone" size="12" placeholder="555-555-5555" tabindex="4" /> 
        </div> 
        <div> 
            <label for="website" accesskey="W">Website <small>(optional)</small></label> 
            <input name="website" type="url" id="website" placeholder="www.yourWebDomain.com" tabindex="5" /> 
        </div> 
    </fieldset> 
    <fieldset> 
        <legend>Your Comments</legend> 
        <div> 
            <label for="subject" accesskey="S">Subject*</label> 
            <select name="subject" id="subject" tabindex="6" required="required"> 
                <option value=""></option> 
                <option value="Support">Support</option> 
                <option value="Sale">Sales</option> 
                <option value="Bug">Report a bug</option>
                <option value="Other">Other</option>
            </select>
        </div>
        <div> 
            <label for="comments" accesskey="C">Comments*</label>
            <textarea name="comments" cols="40" rows="3" id="comments" class="comments" placeholder="Enter your comments" spellcheck="true" required tabindex="7"></textarea> 
        </div> 
    </fieldset> 
    <input type="submit" class="submit" id="submit" value="Submit" tabindex="9" />
</form>

验证后,使用PHP捕获表单字段,将它们封装在XML元素中,然后保存。

例如

<form>
    <fname><?php=$_REQUEST['fname']?></fname>
    <lname><?php=$_REQUEST['lname']?></lname>
    ...
    ..
</form>

双重验证也没有意义,其中一个与另一个略有不同。如果用户成功提交数据,但不知何故在后台被拒绝而没有任何警告,那将是令人讨厌的。DOMDocument也有点过头了。

PHP包含一个名为DOMDocument的类,专门用于构建、更改、导入和导出XML数据。如果您熟悉在Javascript中构造DOM元素,那也是同样的想法。创建您的DOMDocument,然后创建每个元素,并在创建这些元素后将它们附加到DOMDocument(或该元素的父元素)。完成后,使用save函数将其写入文件。