- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我需要为元素实现可序列化类型,该元素包含具有类似 XPath 表达式的任何元素的序列。它有非常简单的方案:
<xsd:complexType name="FilterType">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
这个元素的语义在WSBaseNotification中描述。主题 4.2。问题是要解释表达式,我们需要一些机制来解析其中使用的前缀(XmlReader 通过 LookupNamespace 提供此类功能)。但是还有一个问题就是现阶段还无法解析表达式,此时我们甚至不能对表达式类型和方言做任何假设。所以我们需要以某种方式收集该范围内所有定义的前缀。一些 XmlReader
-s(例如 XmlTextReader
)实现了接口(interface) IXmlNamespaceResolver
,它通过 GetNamespacesInScope 提供了这样的功能,但其中许多没有(例如XmlMtomReader
)。这种类型在很多 web 服务请求中使用,web 服务使用 wcf 框架并有多个绑定(bind),所以我们不能对将使用什么 XmlReader
做任何假设。这是这种类型的原型(prototype)实现,如果我们有 XmlReader
的 GetNamespacesInScope
:
[Serializable]
public class FilterType : IXmlSerializable {
public XElement[] Any;
public void ReadXml(XmlReader reader) {
var xelist = new LinkedList<XElement>();
reader.Read();
var dr = reader as XmlDictionaryReader;
var gns = reader.GetNamespacesInScope(); // need to implement
while (reader.NodeType != XmlNodeType.EndElement) {
if (reader.NodeType == XmlNodeType.Element) {
var x = XElement.ReadFrom(reader) as XElement;
foreach (var ns in gns) {
var pref = ns.Key;
var uri = ns.Value;
if (x.GetNamespaceOfPrefix(pref) == null) {
x.Add(new XAttribute(XName.Get(pref, "http://www.w3.org/2000/xmlns/"), uri));
}
}
xelist.AddLast((XElement)x);
} else {
reader.Skip();
}
}
Any = xelist.ToArray();
reader.ReadEndElement();
}
public void WriteXml(XmlWriter writer) {
if (Any != null) {
foreach (var x in Any) {
x.WriteTo(writer);
}
}
}
public XmlSchema GetSchema() {
return null;
}
}
有没有办法为每个可能的 XmlReader
实现 GetNamespacesInScope
?或者也许还有其他解决方案?
最佳答案
我使用这样的代码:
XPathDocument doc = new XPathDocument("catalog.xml");
XPathNavigator nav = doc.CreateNavigator();
var v = nav.GetNamespacesInScope(XmlNamespaceScope.All);
希望对你有帮助拉杜
关于c# - 如何从 XmlReader 获取范围内的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466608/
我想将使用 .Net Compact Framework 3.5 制作的 Windows Mobile 应用程序降级到 .Net Compact Framework 2.0 SP2。 但是...我不知
我正在尝试从 xml 字符串中读取但是, ` XmlReader reader=XmlReader.Create(new StringReader(stringXml)` 读者总是没有。为什么没有
在以下代码段中,当我遇到一个元素时,使用 XmlReader。我想按原样阅读它,包括元素中的所有属性和命名空间装饰。使用 oXml.Name 属性,我只能获取标签名称。是否有获取标签本身的功能? oX
这可能是一个关于 XmlReader 的幼稚问题,但我还没有在 MSDN 文档中找到答案。 假设我有 XSD SchemaTest.xsd
我想做这样的事情: stringBuilder.AppendLine(" globalVar." + reader.GetAttribute(i).Name + " = " + reader[i]
使用 XMLReader 方法解析 XML 文件时,如何获取元素的父节点? $xml = new XMLReader(); $xml->XML($xmlString); while($xml->rea
这很奇怪。我有一个 WCF Message我正在尝试将正文的内容读入 XmlDocument。消息正文的内容在网络上看起来像这样(在打开 WCF 跟踪的情况下进行检查): (GMT-05:0
我有一个 Xml 文档,其中一些元素如下所示: W X Y Z ABC 我的目标是从上面的例子中得到“ABC”。我尝试查看 XmlElement 类中的 InnerText(返回“WXYZABC”
我有以下代码: for (i = 1; i <= loopsNeeded; i++) { lblCurrent.Text = string.Format("{0} of
我正在尝试将 xml 加载到 XDocument 对象中。 public void ValidateRules(XmlReader xml) { xml.MoveToContent();
我必须为我的商店解析 3 个远程 XML 文件(产品、价格、类别),其中最大的大约有 500MB+。我必须解析它们并插入到 mysql 数据库中。 我可以从两种格式中选择 所有 3 个 XML 文件压
我正在尝试使用 XMLReader ( https://github.com/amarcadet/XMLReader ) 在 objective-c 中制作一个将解析 xml 文档的应用程序:
代码如下: string str = "AppleMango"; using (XmlReader xmlReader = XmlReader.Create(new StringReader(str)
我了解我们如何使用如下代码示例.. public class Sample { public static void Main() { using (XmlReader
我正在使用 XmlReader 读取非常大的 XML 文件(超过 6GB 的数据)以加快一切速度并且工作得非常好。 我在另一个线程中执行此操作(不使用后台工作程序)并且我不知道如何更新进度条,因为 X
关注此introduction可以通过导入命名空间 System.Xml 来使用 XMLReader 类。在我的 Visual Studio 项目中,我使用 .NET 4.0,但 System.Xml
我正在使用以下代码使用 XmlReader 读取一些 XML: XmlReaderSettings settings = new XmlReaderSettings(); settings.Valid
好的,所以我有这个 XML 文件: Iron Repeater true 19 19 50 18 1 1 5 39
为什么我应该将 XMLReader 与 SAXParser 一起使用?我经常看到这种用法: sp = spf.newSAXParser(); XMLReader xr
我有这个 xml 文件。 8.582207 3 true
我是一名优秀的程序员,十分优秀!