当前位置: 首页 > 知识库问答 >
问题:

无法转换xml,因为xmlns[重复]

虞唯
2023-03-14

由于xmlns,下面的xml无法转换,我尝试在没有xmlns的情况下进行转换,它按预期工作。但我正在接收xmlns的输入。请建议我如何克服它。

要求:从xml中检索product福利标题。

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<productData xmlns="http://www.example.org/consolidated">
<productResponse>
    <product>
        <status>
            <isError>false</isError>
        </status>
        <productBenefit>
            <productBenefitCategory>CARDs</productBenefitCategory>
            <productBenefitId>12AA</productBenefitId>
            <productBenefitHeader>Philips</productBenefitHeader>
        </productBenefit>
       <productBenefit>
            <productBenefitCategory>CARDs</productBenefitCategory>
            <productBenefitId>12AB</productBenefitId>
            <productBenefitHeader>Samsung</productBenefitHeader>
        </productBenefit> 
    </product>  
</productResponse>  
<productData>

XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" indent="yes" encoding="UTF-8" omit-xml-declaration="no"/>
<xsl:template match="/">
<xsl:for-each select="productData/productResponse/product/productBenefit">        
 <xsl:value-of select="productBenefitHeader"/>
  </xsl:for-each>   
</xsl:template>
</xsl:stylesheet>

共有1个答案

麹高远
2023-03-14

源xml中的元素位于命名空间<代码>http://www.example.org/consolidated。在搜索元素时,不指定命名空间。

要使用名称空间进行搜索,需要在样式表标记中添加名称空间并为其设置前缀,在本例中,我使用了“pref”。

xmlns:pref="http://www.example.org/consolidated"

现在,您可以在xsl中使用前缀,同时指定要查找的元素。这是您的xsl,但添加了前缀。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:pref="http://www.example.org/consolidated">
 <xsl:output method="html" indent="yes" encoding="UTF-8" omit-xml-declaration="no"/>
  <xsl:template match="/">
     <xsl:for-each select="pref:productData/pref:productResponse/pref:product/pref:productBenefit">        
     <xsl:value-of select="pref:productBenefitHeader"/>
   </xsl:for-each>   
 </xsl:template>
</xsl:stylesheet>

另外,确保你的结束标签是正确的。目前,示例xml中的最后一个标记不是结束标记。

 类似资料:
  • 我将XML作为字符串传递给一个方法,并再次将其转换为XML来完成我的工作。 其正常工作正常,但当出现特殊字符时,如<代码> 我的XML字符串: 我的代码是: 错误: “=”是意外标记。预期标记为“;”。第1行,位置150。 完全错误为: 系统Xml。XmlException未由用户代码处理HResult=-2146232000消息=“=”是意外令牌。预期标记为“;”。第1行,位置150。源=系统。

  • 我正在与外部API通信,我以这种格式接收日期 当我试图将其转换为yyyy-MM-dd时,它不会转换。 入住日期:

  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输

  • 问题内容: 我是Java Reflection的新手。 我检查了很多论坛,但找不到有效的解决方案。 错误: 当我试图从数据库获取对象时: 方法声明 二级扩展 实体类: 并在控制器中调用方法: 这很奇怪,因为我有其他实体可以在没有任何运行时错误的情况下使用该方法。这是该实体: 并在其他控制器中调用该方法: 此代码有效。我看不到模型和控制器之间的任何区别。 有人可以帮我指出我的错误吗? -------

  • 问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。

  • 问题内容: 我当前正在使用条件来检索用户的详细信息,但是当尝试用合适的用户查询详细信息对象时,我得到了ClassCastException。 我的标准代码; 我也尝试使用; 两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但是还有其他解决方案吗? 问题答案: 唯一的其他解决方案是实现Externalizable。