首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InnerXML替换不适用于XMLDOCUMENT

InnerXML替换不适用于XMLDOCUMENT
EN

Stack Overflow用户
提问于 2021-03-09 19:23:44
回答 1查看 78关注 0票数 0

我有一个包含以下内容的XML文件:

代码语言:javascript
复制
<IMG0></IMG0>
<IMG1></IMG1>
<IMG2></IMG2>

它最多代表10张图片。

我试着删除号码,因为有:

代码语言:javascript
复制
<IMG></IMG>
<IMG></IMG>
<IMG></IMG>

我做的是:

代码语言:javascript
复制
for (int l = 0; l <= 10; l++)
{
      doc.InnerXml.Replace("IMG" + l, "IMG");
}

"doc“是一个XMLDocument。

但是节点不会改变。

我能做些什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-09 22:52:18

通过使用XSLT和身份转换模式。

第二个模板将找到任何以'IMG‘开头的XML元素,并将其转换为'IMG’,同时保持其他元素不变。

XML

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<root>
   <Betalningsmottagares_x0020_postnr>401 01</Betalningsmottagares_x0020_postnr>
   <Betalningsmottagares_x0020_postort>Göteborg</Betalningsmottagares_x0020_postort>
   <IMG0>10</IMG0>
   <IMG1>20</IMG1>
   <IMG2>30</IMG2>
</root>

XSLT

代码语言:javascript
复制
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="*[starts-with(local-name(), 'IMG')]">
        <IMG>
            <xsl:value-of select="."/>
        </IMG>
        <xsl:apply-templates/>
    </xsl:template>
</xsl:stylesheet>

输出

代码语言:javascript
复制
<?xml version='1.0' encoding='utf-8' ?>
<root>
  <Betalningsmottagares_x0020_postnr>401 01</Betalningsmottagares_x0020_postnr>
  <Betalningsmottagares_x0020_postort>Göteborg</Betalningsmottagares_x0020_postort>
  <IMG>10</IMG>10
  <IMG>20</IMG>20
  <IMG>30</IMG>30
</root>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66545960

复制
相关文章

相似问题

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