我有一个xml。我想要元素
<?xml version="1.0"?>
<Container xmlns:ti="http://www.to-increase.com/data/blocks">
<WarehouseHeader>
<No>RMA-21001</No>
<Description>RMA t.b.v. order_id #2</Description>
<Duedate>17/11/2021</Duedate>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>7890</ItemNo>
<Description>Radiant Tee-L-Purple</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
</WarehouseHeader>
<WarehouseHeader>
<No>RMA-21003</No>
<Description>RMA t.b.v. order_id #32</Description>
<Duedate>02/12/2021</Duedate>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>4560</ItemNo>
<Description>Strive Shoulder Pack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>1234</ItemNo>
<Description>Driven Backpack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
</WarehouseHeader>
</Container>
我可以用foreach实现这一点,但在我的例子中,只有第一个
密码
$xml = simplexml_load_string($output);
$qty = $xml->WarehouseHeader->Quantity;
foreach ($xml->WarehouseHeader as $WarehouseHeader) {
$child = $WarehouseHeader->WarehouseLine->addChild("Quantity", $qty);
}
echo $xml->asXML();
输出
<?xml version="1.0"?>
<Container xmlns:ti="http://www.to-increase.com/data/blocks">
<WarehouseHeader>
<No>RMA-21001</No>
<Description>RMA t.b.v. order_id #2</Description>
<Duedate>17/11/2021</Duedate>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>7890</ItemNo>
<Description>Radiant Tee-L-Purple</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity></WarehouseLine>
</WarehouseHeader>
<WarehouseHeader>
<No>RMA-21003</No>
<Description>RMA t.b.v. order_id #32</Description>
<Duedate>02/12/2021</Duedate>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>4560</ItemNo>
<Description>Strive Shoulder Pack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity></WarehouseLine>
<Quantity>1</Quantity> //next quantities
<WarehouseLine>
<ItemNo>1234</ItemNo>
<Description>Driven Backpack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
</WarehouseHeader>
</Container>
应该是---参见
<?xml version="1.0"?>
<Container xmlns:ti="http://www.to-increase.com/data/blocks">
<WarehouseHeader>
<No>RMA-21001</No>
<Description>RMA t.b.v. order_id #2</Description>
<Duedate>17/11/2021</Duedate>
<WarehouseLine>
<ItemNo>7890</ItemNo>
<Description>Radiant Tee-L-Purple</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity>
</WarehouseLine>
</WarehouseHeader>
<WarehouseHeader>
<No>RMA-21003</No>
<Description>RMA t.b.v. order_id #32</Description>
<Duedate>02/12/2021</Duedate>
<WarehouseLine>
<ItemNo>4560</ItemNo>
<Description>Strive Shoulder Pack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity>
</WarehouseLine>
<WarehouseLine>
<ItemNo>1234</ItemNo>
<Description>Driven Backpack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity>
</WarehouseLine>
</WarehouseHeader>
</Container>
下面是基于XSLT的解决方案。
两个XSLT模板正在做需要做的事情:
输入XML
<?xml version="1.0"?>
<Container xmlns:ti="http://www.to-increase.com/data/blocks">
<WarehouseHeader>
<No>RMA-21001</No>
<Description>RMA t.b.v. order_id #2</Description>
<Duedate>17/11/2021</Duedate>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>7890</ItemNo>
<Description>Radiant Tee-L-Purple</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
</WarehouseHeader>
<WarehouseHeader>
<No>RMA-21003</No>
<Description>RMA t.b.v. order_id #32</Description>
<Duedate>02/12/2021</Duedate>
<Quantity>1</Quantity>
<WarehouseLine>
<ItemNo>4560</ItemNo>
<Description>Strive Shoulder Pack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
<Quantity>8</Quantity>
<WarehouseLine>
<ItemNo>1234</ItemNo>
<Description>Driven Backpack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
</WarehouseLine>
</WarehouseHeader>
</Container>
XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ti="http://www.to-increase.com/data/blocks">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!--supress Quantity-->
<xsl:template match="WarehouseHeader/Quantity"/>
<!--bring Quantity from directly above-->
<xsl:template match="WarehouseLine">
<xsl:copy>
<xsl:copy-of select="*"/>
<xsl:copy-of select="preceding-sibling::Quantity[1]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出XML
<Container xmlns:ti="http://www.to-increase.com/data/blocks">
<WarehouseHeader>
<No>RMA-21001</No>
<Description>RMA t.b.v. order_id #2</Description>
<Duedate>17/11/2021</Duedate>
<WarehouseLine>
<ItemNo>7890</ItemNo>
<Description>Radiant Tee-L-Purple</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity>
</WarehouseLine>
</WarehouseHeader>
<WarehouseHeader>
<No>RMA-21003</No>
<Description>RMA t.b.v. order_id #32</Description>
<Duedate>02/12/2021</Duedate>
<WarehouseLine>
<ItemNo>4560</ItemNo>
<Description>Strive Shoulder Pack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>1</Quantity>
</WarehouseLine>
<WarehouseLine>
<ItemNo>1234</ItemNo>
<Description>Driven Backpack</Description>
<UnitofMeasureCode>PCS</UnitofMeasureCode>
<Quantity>8</Quantity>
</WarehouseLine>
</WarehouseHeader>
</Container>
现在,如果我更改,text元素并没有真正移动到svg元素的开头,而是移动到它下面一行的开头,为什么?有人能解释一下为什么没有按预期工作吗?
问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?
问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?
问题内容: 我有一个( 父 )包含另一个( 子 )。Parent是第一个没有特定CSS样式的元素。当我设定 最终结果是我的孩子的顶部仍然与父母对齐。我的父母没有将孩子向下移动10px,而是将其向下移动10px。 我的设定为。 我在这里想念什么? 编辑1 我的父母需要具有严格定义的尺寸,因为它的背景必须从上到下显示(像素完美)。因此,在其上设置垂直边距是 不可行的 。 编辑2 此行为在FF,IE和C
嗨,我有一个问题,我的网站上的动画。我有两个div,一个有100%的高度,如果我悬停在它上面,它会下降2个rems,而这个元素下的所有其他内容也会下降。我该怎么修好它?下面是指向简单示例的链接:jsfiddle null null