即使没有 xmlns,ElementTree 也能找到 returns None
ElementTree find returns None even without xmlns
我正在尝试在 Python 2.7.5 中使用不带 xmlns 的 ElementsTree 替换 XML 中的一些值,但无论如何它总是 returns None。
这是我的 truncated.xml:
<?xml version='1.0' encoding='UTF-8'?>
<definition>
<scm>
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>git@github.company.com:org/repository.git</url>
<credentialsId>abcdefgh-123456-7890</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>refs/heads/master</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg/>
<extensions/>
</scm>
<scriptPath>Jenkinsfile</scriptPath>
<lightweight>true</lightweight>
</definition>
这是我在 test.py 中的代码:
from xml.etree import ElementTree as et
tree = et.parse('truncated.xml')
print(tree.find('definition/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url'))
tree.find('definition/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').text = '<replacement text>'
输出:
None
Traceback (most recent call last):
File "test.py", line 4, in <module>
tree.find('definition/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').text = '<replacement text>'
AttributeError: 'NoneType' object has no attribute 'text'
构建树时,上下文已经 definition
。尝试将 definition/
从 xpath 的前面去掉...
tree.find('scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url')
我正在尝试在 Python 2.7.5 中使用不带 xmlns 的 ElementsTree 替换 XML 中的一些值,但无论如何它总是 returns None。
这是我的 truncated.xml:
<?xml version='1.0' encoding='UTF-8'?>
<definition>
<scm>
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>git@github.company.com:org/repository.git</url>
<credentialsId>abcdefgh-123456-7890</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>refs/heads/master</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg/>
<extensions/>
</scm>
<scriptPath>Jenkinsfile</scriptPath>
<lightweight>true</lightweight>
</definition>
这是我在 test.py 中的代码:
from xml.etree import ElementTree as et
tree = et.parse('truncated.xml')
print(tree.find('definition/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url'))
tree.find('definition/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').text = '<replacement text>'
输出:
None
Traceback (most recent call last):
File "test.py", line 4, in <module>
tree.find('definition/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').text = '<replacement text>'
AttributeError: 'NoneType' object has no attribute 'text'
构建树时,上下文已经 definition
。尝试将 definition/
从 xpath 的前面去掉...
tree.find('scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url')