【问题标题】:Using item() to insert data into XML document使用 item() 将数据插入 XML 文档
【发布时间】:2023-04-08 02:45:01
【问题描述】:

我正在尝试将数据插入我的 XML 文档到 content_set 的特定节点中,我以为我必须使用 item() 但每次我提交表单时,数据都会放在我的文档末尾但之前收官content_sets

PHP:

//这是我想我会根据我的html中select的值来选择数据放入哪个节点的地方,0是doc_types,1是video_types

$file_type = $_POST['file_type'];
$doc = new DOMDocument();
$doc->load( 'myfile_files.xml' );

$doc->formatOutput = true;
$r = $doc->getElementsByTagname('content_sets')->item($file_type);

$b = $doc->createElement("article");

$titleName = $doc->createElement("doc_name");
$titleName->appendChild(
$doc->createTextNode( $Document_Array["name"] )
);

$b->appendChild( $titleName );


$r->appendChild( $b );

$doc->save("myfile_files.xml");

XML:

<?xml version="1.0" encoding="UTF-8"?>
<content_sets>
    <doc_types>

        <article>
            <doc_name>Test Proposal</doc_name>
            <file_name>tes_prop.docx</file_name>
            <doc_description>Test Word document. Please remove when live.</doc_description>
            <doc_tags>word document,test,rfp template,template,rfp</doc_tags>
            <last_update>01/26/2013 23:07</last_update>
        </article>
    </doc_types>



    <video_types>
        <article>
            <doc_name>Test Video</doc_name>
            <file_name>test_video.avi</file_name>
            <doc_description>Test video. Please remove when live.</doc_description>
            <doc_tags>test video,video, avi,xvid,svid avi</doc_tags>
            <last_update>01/26/2013 23:07</last_update>
        </article>
    </video_types>
</content_sets>

HTML:

 <p>Content Type:<br/>
<select name="file_type">
    <option value="0">Document</option>
    <option value="1">Video</option>
    <option value="2">Image</option>
</select></p>

我试图包含脚本中最重要的部分,但如果需要,可以将其全部发布。

谢谢!

【问题讨论】:

  • 更具体: (1) 哪个&lt;content_set&gt; 是要更改的? (2) 你要插入哪个元素?

标签: php html xml dom


【解决方案1】:

1) 使用 XPath 查找要更改的节点

2) 获得节点后,只需为其分配一个新值。

3) 完成后写入文件

查看这些链接了解更多详情:

【讨论】:

  • 感谢您的信息。我对我的 php 进行了编辑,以显示其余的 xml 更新并保存。我只是想知道如果使用 getElementsByTagname 查找 content_sets 的所有节点然后使用 item(0) 插入第一个节点,为什么我的原始脚本不起作用?再次感谢!
  • 问:为什么 getElementsByTagname() 不起作用? A:有很多可能的原因。如果您想调试,我会将您的复杂表达式分解为子表达式,然后“打印”每个子表达式的值,直到找到错误为止。例如,echo $file_type&lt;br/&gt;,然后是 print_r ($doc-&gt;getElementsByTagname('content_sets'))&lt;br/&gt;,等等。您还可以考虑获取 PHP for Eclipse 之类的 IDE,或者尝试使用 XDebug
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2023-03-27
  • 2011-02-08
  • 2022-07-11
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多