- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我目前正在尝试加载一个 xml 文件并修改一对 xml 标记内的文本,如下所示:
<anode>sometext</anode>
我目前有一个名为 getText
的辅助函数我用来获取文本 sometext
多于。现在我需要修改 childnodes
我想,在节点内部修改具有上面显示的 XML 片段的节点,以更改 sometext
至 othertext
.通用API补丁getText
功能在下面的脚注中显示。
所以我的问题是,这就是我们获取文本的方式,我该如何编写一个名为 setText(node,'newtext')
的辅助辅助函数? .我更希望它在节点级别上运行,并自行找到通往子节点的路径,并且运行稳健。
上一个问题的可接受答案为“I'm not sure you can modify the DOM in place”。真的是这样吗? Minidom 是否已损坏到实际上是只读的?
通过脚注的方式,阅读 <anode>
之间的文本和 </anode>
,令我惊讶的是,不存在直接的简单单一 minidom 函数,Python xml 教程中建议使用这个小辅助函数:
import xml.dom.minidom
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
# I've added this bit to make usage of the above clearer
def getTextFromNode(node):
return getText(node.childNodes)
Elsewhere在 StackOverflow 中,我看到了 2008 年接受的答案:
node[0].firstChild.nodeValue
如果这就是用 minidom 阅读有多难,那么看到人们说“不要这样做!”我并不感到惊讶。当您询问如何编写可能会修改 XML 文档的节点结构的内容时。
更新 下面的答案表明它并不像我想象的那么难。
最佳答案
实际上 minidom 并不比其他 dom 解析器难用,如果你不喜欢它,你可以考虑向 w3c 投诉
from xml.dom.minidom import parseString
XML = """
<nodeA>
<nodeB>Text hello</nodeB>
<nodeC><noText></noText></nodeC>
</nodeA>
"""
def replaceText(node, newText):
if node.firstChild.nodeType != node.TEXT_NODE:
raise Exception("node does not contain text")
node.firstChild.replaceWholeText(newText)
def main():
doc = parseString(XML)
node = doc.getElementsByTagName('nodeB')[0]
replaceText(node, "Hello World")
print doc.toxml()
try:
node = doc.getElementsByTagName('nodeC')[0]
replaceText(node, "Hello World")
except:
print "error"
if __name__ == '__main__':
main()
关于Python 迷你世界/xml : How to set node text with minidom api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588072/
我有以下任一代码: import urllib from xml.dom import minidom res = urllib.urlopen('https://www.google.com/web
我已经阅读了这里有关此问题的几个答案,但仍然无法解决它。 基本上,我想打印子节点的nodeValue。 这是 xml: true 2 500 10000
快速提问,当您看到错误“builtins.IndexError: list index out of range”时,正确的解决方案是什么? 这是引用另一个 thread 我已经开始了,但我不想让它出
我有一个具有这种结构的 xml 文件: EB 23242 EB 我想检查visit标签中是否存在每一列,如果不存在我想返回Non
我正在将一段 JS 代码转换为 Python,并且我一直在使用 mini DOM,但某些事情无法正常工作。他们在 JavaScript 中运行时正在查找。我进行转换是因为我想要一致的更改/顺序(即添加
我有一个具有以下结构的 xml 文件: ... ... ...
我递归地遍历 XML 中的所有节点: def verify_elements_children(root): if root.childNodes: for node in r
我需要从此 XML 文件读取数据。我不知道如何从这个 XML 文件中读取数据 aaaaa、bbbbb、ccccc、ddddd、eeeee、fffff 和 ggggg。
我正在寻找使用 xml minidom 提取 xml 文件的内容,示例如下: text1 text2 text3 以下代码仅提取“
8 小时以来,我现在尝试解析 XML 并将 5 行文本添加到 xml 中。我真的没有取得任何进展,writexml、toxml 和 saveXML 似乎都无法在 minidom 库中工作 我们要解析
我有以下功能: def removeNodes(mydom, name): nodeList = mydom.getElementsByTagName('option') # in p
我正在使用Python的minidom解析文档,例如: This tag contains a "" string ""字符串导致 xml.parsers.expat.ExpatError:
我目前正在使用 IRC Bot,并希望从如下所示的 XML 文件中检索配置: HOST1 6667 CHANNAME1 CHANNAME2
是否可以使用 minidom 获取节点的名称? 例如我有一个节点: 我想做的是存储值 heading 以便我可以将它用作字典中的键。 我能得到的最接近的是这样的: [] 我确定我在这里忽略了一些非常
我想遍历一个dom节点的所有属性并获取名称和值 我试过这样的事情(文档对此不是很详细所以我猜了一点): for attr in element.attributes: attrName = a
给定 如何在不遍历每个标签并检查属性的情况下立即获取名称为“frame.len”的字段? 最佳答案 我认为你做不到。 来自父element , 你需要 for subelement i
在使用 minidom 处理 XML 时,有没有一种方法可以保留属性的原始顺序? 假设我有:当我用 minidom 修改它时,属性按字母顺序重新排列为蓝色、绿色和红色。我想保留原始订单。 我正在通过遍
我目前面临的 XML 看起来像这样: 345754 这包含在层次结构中。我已经解析了 xml,并希望通过搜索“345754”找到 ID 节点。 最佳答案 vartec 的回答需要更正(抱歉,我不确定我
我有这个 xml 结构, 我如何检查 minidom,root 是 root,并且子元素始终是 followin 元素? ch
我正在使用 Python 和 minidom 将数据插入现有的 XML 文件中。当我这样做时,我得到了正确的 XML 代码,但它看起来不像我想要的那样。这是我的 xml 文件开头的示例。
我是一名优秀的程序员,十分优秀!