在XML中编辑多个主要元素的多个子元素的多个属性

时间:2019-06-05 08:58:35

标签: xml

因此,这里的问题是,您必须像在磁贴中阅读的那样,必须编辑多个Main元素的多个子元素的多个属性。这些属性保留了元素的位置,应该进行编辑,但是我实际上没有经验,因此不知道在这里做什么。

<instance definition="lamp.rect.white" state="EXEC=false">
    <position x="168" y="80" zIndex="108" width="30" height="3"/>
    <position x="254" y="80" zIndex="138" width="30" height="3"/>
    <position x="339" y="80" zIndex="137" width="30" height="3"/>
    <position x="425" y="80" zIndex="134" width="30" height="3"/>
    <position x="511" y="80" zIndex="109" width="30" height="3"/>
    <position x="596" y="80" zIndex="119" width="30" height="3"/>
    <position x="682" y="80" zIndex="122" width="30" height="3"/>
    <position x="768" y="80" zIndex="127" width="30" height="3"/>
    <position x="854" y="80" zIndex="128" width="30" height="3"/>
    <position x="939" y="80" zIndex="129" width="30" height="3"/>
    <position x="1025" y="80" zIndex="130" width="30" height="3"/>
    <position x="1111" y="80" zIndex="131" width="30" height="3"/>
    <position x="1196" y="80" zIndex="132" width="30" height="3"/>
    <position x="1282" y="80" zIndex="133" width="30" height="3"/>
    <position x="1368" y="80" zIndex="103" width="30" height="3"/>
    <position x="1453" y="80" zIndex="135" width="30" height="3"/>
    <position x="1539" y="80" zIndex="136" width="30" height="3"/>
</instance>
<instance definition="lamp.rect.white" state="SW.STATE">
    <position x="1503" y="64" zIndex="93" width="15" height="3"/>
    <position x="1503" y="69" zIndex="91" width="15" height="3"/>
    <position x="1503" y="74" zIndex="90" width="15" height="3"/>
    <position x="1503" y="78" zIndex="89" width="15" height="3"/>
    <position x="1503" y="83" zIndex="88" width="15" height="3"/>
    <position x="1503" y="88" zIndex="87" width="15" height="3"/>
    <position x="1503" y="92" zIndex="86" width="15" height="3"/>
    <position x="1503" y="97" zIndex="94" width="15" height="3"/>
</instance>
<instance definition="lamp.rect.white" state="SW_LDG28.STATE">
    <position x="212" y="64" zIndex="100" width="15" height="3"/>
    <position x="212" y="69" zIndex="92" width="15" height="3"/>
    <position x="212" y="73" zIndex="98" width="15" height="3"/>
    <position x="212" y="78" zIndex="101" width="15" height="3"/>
    <position x="212" y="83" zIndex="97" width="15" height="3"/>
    <position x="212" y="88" zIndex="96" width="15" height="3"/>
    <position x="212" y="92" zIndex="95" width="15" height="3"/>
    <position x="212" y="97" zIndex="99" width="15" height="3"/>
</instance>

因此,我想使用特定数字增加/减少所有x =“”值或所有y =“”值。

2 个答案:

答案 0 :(得分:0)

xshXML::LibXML的包装,我碰巧维护,您可以做类似的事情

server <- function(input, output, session) {

    observeEvent(input$go, {
        x <- list()
        N = availableCores()
        Tasks = rep(10, N) #Number of sequential tasks per core
        progress = list() #A list to maintain progress for each run

        for(j in 1:N){

            progress[[j]] = AsyncProgress$new(message = paste("analysis, core ",j))

            x[[j]] <- future({
                for(l in 1:Tasks[j]){
                    progress[[j]]$inc(1/Tasks[j])
                    Sys.sleep(1)
                }
                progress[[j]]$close()
            })
        }
    })
}

对于open file.xml ; for //position[@zIndex > 100] set @x @x+10 ; save :b ; 大于100的所有头寸增加x

答案 1 :(得分:0)

您可以使用xslt转换xml。这将导致包含转换后的元素/属性的全新xml文件。例如,如果您希望将包含值212的所有属性“ x”的值转换为值300,同时将1503 tot 1102转换为值,则以下xslt可以为您完成此操作。试一试以使其正常工作。

<xsl:output method="xml" indent="yes"/>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="@x[.='(212)']">
        <xsl:attribute name="x">
            <xsl:value-of select="replace(.,'212','300')"/>
        </xsl:attribute>
    </xsl:template>

    <xsl:template match="@x[.='1503']">
        <xsl:attribute name="x">
            <xsl:value-of select="replace(.,'1503,'1102')"/>
        </xsl:attribute>
    </xsl:template>    
</xsl:stylesheet>

您可以使用免费的xml Web转换器来转换xml或下载一个不错的程序来为您做。有很多工具可简化使用xml的工作:)。

我希望这会有所帮助!

ps:我已使用以下问题的答案作为参考: XSLT: Change certain attribute values