问题标签 [outerxml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 从 XmlDocument 中获取带有换行符的缩进 XML 的最简单方法是什么?
当我从头开始构建 XML 时XmlDocument
,该OuterXml
属性已经将所有内容都很好地缩进了换行符。但是,如果我调用LoadXml
一些非常“压缩”的 XML(没有换行符或缩进),那么输出就会OuterXml
保持这种状态。所以 ...
从 的实例获取美化 XML 输出的最简单方法是XmlDocument
什么?
.net - System.Xml.XmlDocument, System.Xml.XPath.XPathNavigator{ReplaceSelf,OuterXml}:替换文档中的占位符
我目前正在维护一个大约一年前为工作编写的 Web 应用程序。基本上,它允许用户创建自定义 XHTML 报告模板。我使用XmlDocument
, XPathNavigator
, 等。人。用数据验证、清理和替换占位符。
它在大多数情况下都可以正常工作,但我刚刚意识到我实际上并没有用数据替换占位符元素,而是用数据文本替换占位符的文本。
人为的例子:
会成为...
这在过去并不是真正的问题,因为模板只被处理过一次;当用户选择针对一组选定的数据运行它时。但是,现在我们为他们提供了预览结果输出并在打印前对其进行修改的选项。这样做的结果是替换引擎不止一次地处理它:首先生成原始输出,然后再次“打印”修改后的输出。替换引擎找到实际上是数据的占位符,未能找到要替换的相应数据元素,并且处理失败并出现异常。
原始代码使用该XPathNavigator.InnerXml
属性将占位符元素的内容从“{CompanyName}”更改为“Castopulence”(例如):
因此,如果我想彻底替换这个占位符元素,我会改用XPathNavigator.OuterXml
:
这在大多数情况下似乎确实有效,或者至少我认为它有效,但看似随机的替换总是会导致System.InvalidOperationException
抛出消息“操作结果没有生成内容”。所以我不确定它们中的任何一个是否有效,但我认为它们是有效的,因为之前的替换不会引发异常。
我真的不知道这意味着什么,而且谷歌只有 4 个结果是异常消息的确切短语,每个结果都是我不会说的语言。谷歌翻译他们没有发现任何相关内容。
实验上我试过XPathNavigator.ReplaceSelf
,这似乎完成了同样的事情,但不幸的是,同样的异常从同一个内部调用中抛出。
两种情况下的堆栈跟踪:
在 System.Xml.DocumentXmlWriter.Close(WriteState currentState)
在 System.Xml.XmlWellFormedWriter.Close()
在 System.Xml.XPath.XPathNavigator.ReplaceSelf(XmlReader newNode)
在 System.Xml.XPath.XPathNavigator.ReplaceSelf(String newNode)
...截断私有应用程序符号...
MSDN 参考描述了它引发的ReplaceSelf
异常,但引发的唯一System.InvalidOperationException
异常是“XPathNavigator 未定位在元素、文本、处理指令或注释节点上”时。在 Visual Studio 调试器中,我可以确认它位于元素上。我的代码同意。指向占位符的XPathNavigator
' 实际上是System.Xml.XPath.XPathNodeIterator.Current
(所有这些都被添加到列表中,列表被转换为数组,并在替换阶段迭代)。
出了什么问题(异常实际上是什么意思),我该如何解决?
附加:实际上引发异常的类 ( System.Xml.DocumentXmlWriter
) 似乎没有记录在 MSDN 上(或者至少,我无法通过 Google 搜索或 MSDN 搜索找到它)。
追加:我已经确定导致问题的一个替换的数据只是一个空格(即" "
)。我不明白为什么这可能是一个问题XPathNavigator
,但显然它是......似乎也是一个空字符串(即,""
)。那么问题可能是试图用只有空格替换一个元素。我不明白为什么这应该是一个问题。
equivalent - ASP.NET 1.1 - XPathNavigator OuterXml 等效
我正在使用 Google Maps API 在 1.1 中进行 GeoCode 查找,并且遇到了 XPathNavigator 对象的障碍。
我需要创建一个“子导航器”,以便我们可以对节点执行全局 xpath 搜索(例如 //adr:PostalCodeNumber),因为 xml 架构会根据返回的地址的准确性而改变。
这是一个示例响应:
我有这个 2.0 代码块,我正在尝试为 OuterXml 属性找到 1.1 等效项:
我找到了这篇博客文章,但是指向 SerializableXPathNavigator 源的链接已经失效。=(
http://www.tkachenko.com/blog/archives/000155.html
请原谅我的菜鸟,但我将如何使用自己的 OuterXml 方法编写自己的 SerializableXPathNavigator 类?
非常感谢你的帮助。
xml - XmlNode InnerXml vs OuterXml
I've come across a bizarre situation and I'm hoping that someone who understands better than I do can help me to resolve it.
I'm inserting an image into an Xml document such that it can be opened with Microsoft Word. As part of this, I need to add an Xml 'Relationship' which maps to the element containing the image. Straightforward enough.
I'm adding the node that should look like this:
However, in the final .doc file, the same line appears as this:
i.e. it now has an empty xmlns="" attribute.
This is sufficient for Word to believe that the document is corrupt and refuse to open. If I manually open the file and delete that attribute, the file opens.
Clearly, I want to remove it programmatically :-) So I found the parent node. This is where my understanding is a little hazy. I believed that the OuterXml element contains the node & the contents of all it's children, while the InnerXml simply contains the children.
Here's what I'm seeing (note that the escape characters are because I've cut from the text viewer in Visual Studio).
OuterXml:
InnerXml:
Note how the 6th and final element has the erroneous xmlns="" in the OuterXml, but not within the InnerXml. I can easily change the InnerXml, but not the OuterXml.
So, my ultimate question is "how do I get rid of this added attribute?", but I'm also hoping someone can explain why there is a difference between the Xml of the inner and outer (aside from the container).
c# - 如何仅获取 XML 元素的外部标记?
如果我有XmlNode
这样的
我可以得到它的InnerXml
(“ Content
”),但我怎样才能得到相反的结果呢?也就是说,只是由其开始标签和结束标签分隔的外部标记:
和
我想排除内部 xml,所以类OuterXml
上的属性XmlNode
不会做。
我是否必须通过抓取每一块并将它们格式化为字符串来手动构建它?如果是这样,除了元素的名称、前缀和属性之外,XML 元素还有哪些我应该记住的其他属性?
vb.net - 自动格式化一个长的 outerXml 字符串
我有多个大型 XML 文件,并试图提取特定元素及其子元素的 5 个实例。我已经设置了所有代码,但是,我必须使用 StreamWriter 来写出 xml。我该怎么做才能正确缩进等等。
该字符串看起来类似于:
我希望它看起来像这样: