【发布时间】:2023-03-07 00:11:01
【问题描述】:
如果您更喜欢小提琴 - click here。
在我的调试器中,我有一个 XmlElement.OuterXml:
<?xml version="1.0"?>
<p:sld mc:Ignorable="p14 a14 p15 p16 a16 thm15 adec ahyp v"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main"
xmlns:ahyp="http://schemas.microsoft.com/office/drawing/2018/hyperlinkcolor"
xmlns:adec="http://schemas.microsoft.com/office/drawing/2017/decorative"
xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main"
xmlns:p16="http://schemas.microsoft.com/office/powerpoint/2015/main"
xmlns:p15="http://schemas.microsoft.com/office/powerpoint/2012/main"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main"
注意它是 mc:Ignorable,而不是 Ignorable。
我调用 XmlElement.Attributes 并且其中一个属性用于 Ignorable 但是...
它丢失了前缀/命名空间。
知道这里发生了什么吗?
更新:I also posted on MSDN 到目前为止的答案是这是一个错误,我很惊讶这么基本的东西会出错。
【问题讨论】:
-
前缀无关紧要。它绝对可以是任何东西。最主要的是该属性有一个命名空间。
-
它确实在那里。如果您为整个
XmlDocument doc生成 XML,那么您将获得<inner mc:Ignorable="p14 a14 p15 p16 a16 thm15 adec ahyp v" />,请参阅 dotnetfiddle.net/v9v36E。我不确定为什么XmlAttribute.Name中不存在前缀,因为据记录它会返回 属性节点的限定名称。 -
老实说,您应该考虑切换到LINQ to XML,它更容易使用。值得注意的是,它对命名空间的处理比
XmlDocument简单一些。
标签: c# xml system.xml