如何保持xml样式表?

列维

我想保留xml样式表。但这是行不通的。我使用Python修改XML以自动部署hadoop。

XML:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://c11:9000</value>
  </property>
</configuration>

代码:

from xml.etree.ElementTree import ElementTree as ET

def modify_core_site(namenode_hostname):
    tree = ET()
    tree.parse("pkg/core-site.xml")
    root = tree.getroot()
    for p in root.iter("property"):
        name = p.find("name").text
        if name == "fs.default.name":
            text = "hdfs://%s:9000" % namenode_hostname
            p.find("value").text = text
    tree.write("pkg/tmp.xml", encoding="utf-8", xml_declaration=True)

modify_core_site("c80")

结果:

<?xml version='1.0' encoding='utf-8'?>
<configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://c80:9000</value>
  </property>
</configuration>

xml样式表消失了...我该如何保持?

用户名

一种解决方案是可以使用lxml。解析xml之后,直到找到xsl节点。以下是快速示例:

>>> import lxml.etree
>>> doc = lxml.etree.parse('C:/downloads/xmltest.xml')
>>> root = doc.getroot()
>>> xslnode=root.getprevious().getprevious()
>>> xslnode
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

确保进行了一些异常处理,并检查该节点是否确实存在。您可以通过以下方式检查节点是否为xslt处理指令:

>>> isinstance(xslnode, lxml.etree._XSLTProcessingInstruction)
True

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何保持xml样式表?

来自分类Dev

如何在Android中使用多个xml“样式表”?

来自分类Dev

XML样式表可删除所有空子节点,但保持父级

来自分类Dev

从XML文件中删除样式表

来自分类Dev

Google日历XML样式表XSL

来自分类Dev

XML样式表-Web服务

来自分类Dev

从样式表中提取 xml 属性

来自分类Dev

如何使Bootstrap版本3样式表保持最新与最新版本?

来自分类Dev

导航网站时如何保持动态切换的样式表?

来自分类Dev

如何使用Java将xml样式表包含到XML文件中

来自分类Dev

如何从HTML解析/下载样式表

来自分类Dev

如何修改导线样式表

来自分类Dev

如何应用范围样式表?

来自分类Dev

如何更新样式表的单个属性?

来自分类Dev

移动设备的样式表应如何?

来自分类Dev

如何覆盖全局Bootstrap样式表?

来自分类Dev

如何从样式表调用JBOSS服务?

来自分类Dev

如何为插件添加样式表

来自分类Dev

如何从HTML解析/下载样式表

来自分类Dev

如何更改QMessageBox按钮的样式表?

来自分类Dev

如何应用范围样式表?

来自分类Dev

如何更改链接的样式表?

来自分类Dev

如何选择不带ID的样式表?

来自分类Dev

如何获取样式表中定义的命名空间前缀,而不是从输入XML获取

来自分类Dev

如何为带有属性的Xml嵌套节点编写样式表?

来自分类Dev

XSLT样式表不适用于Firefox中的XML。如何解决?

来自分类Dev

如何禁用prettyPrint xstream xml并仍添加样式表和序言?

来自分类Dev

如何获取样式表中定义的名称空间前缀,而不是从输入XML中获取

来自分类Dev

如何使用C#在XML文件中添加XSL样式表?