首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleXML根节点前缀php

SimpleXML根节点前缀php
EN

Stack Overflow用户
提问于 2018-10-01 08:52:37
回答 1查看 504关注 0票数 4

我试图用php创建XML :这是真正的XML

代码语言:javascript
复制
<p:FatturaElettronica versione="FPA12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://microsoft.com/wsdl/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versione="FPA12" >
 <FatturaElettronicaHeader>
  <DatiTrasmissione>
   <IdTrasmittente>
    <IdPaese>IT</IdPaese>
    <IdCodice>01234567890</IdCodice>
   </IdTrasmittente>
   <ProgressivoInvio>00001</ProgressivoInvio>
   <FormatoTrasmissione>FPA12</FormatoTrasmissione>
   <CodiceDestinatario>AAAAAA</CodiceDestinatario>
  </DatiTrasmissione>

我的代码:

代码语言:javascript
复制
$xml = new SimpleXMLElement('<p:FatturazioneElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://microsoft.com/wsdl/types/" />');
$xml->addAttribute("versione","FPA12");
$xml->addAttribute("xmlns:xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
$FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader');
$DatiTrasmissione=$FatturaElettronicaHeader->addChild('DatiTrasmissione');
$IdTrasmittente=$DatiTrasmissione->addChild('IdTrasmittente');
$IdTrasmittente->addChild('IdPaese', 'IT');
$IdTrasmittente->addChild('IdCodice','01234567890');

$ProgressivoInvio=$DatiTrasmissione->addChild('ProgressivoInvio', '00001');
$FormatoTrasmissione=$DatiTrasmissione->addChild('DatiTrasmissione', 'FPA12');
$CodiceDestinatario=$DatiTrasmissione->addChild('CodiceDestinatario', 'AAAAAA');

在我的xml文件中,每个标记中都有前缀p:。

根节点中需要前缀p (p:FatturaElettronica)。

我不知道怎么做。

代码语言:javascript
复制
<p:FatturazioneElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://microsoft.com/wsdl/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versione="FPA12">
 <p:FatturaElettronicaHeader>
   <p:DatiTrasmissione>
    <p:IdTrasmittente>
     <p:IdPaese>IT</p:IdPaese>
     <p:IdCodice>01234567890</p:IdCodice>
    </p:IdTrasmittente>
    <p:ProgressivoInvio>00001</p:ProgressivoInvio>
   <p:DatiTrasmissione>FPA12</p:DatiTrasmissione>
   <p:CodiceDestinatario>AAAAAA</p:CodiceDestinatario>
 </p:DatiTrasmissione>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-01 09:12:13

SimpleXML的问题是,如果在添加元素时不指定它的名称空间,那么它假定父节点(因此是p:)的名称空间。要将其添加到默认的命名空间(即没有前缀),您需要更改一些内容。

首先是在根元素中添加默认的命名空间声明.

代码语言:javascript
复制
$xml = new SimpleXMLElement('<p:FatturazioneElettronica 
      xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      xmlns:p="http://microsoft.com/wsdl/types/" 
      xmlns="http://dummy.com" />');

我刚才说的是接近尾声的是xmlns="http://dummy.com"

然后,当向文档添加第一个元素时,将其添加到新定义的默认命名空间中.

代码语言:javascript
复制
$FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader', 
            null, 'http://dummy.com');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52587528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档