Tag: xml namespaces

使用带有包含的XSD

这是一个XSD: 这是第二个包含上述XSD的XSD: 我需要将(第二个)XSD读入C#并且: 检查它是否是有效的XSD,并且 validation文件。 下面是一些在架构中读取的C#: XmlSchemaSet schemaSet = new XmlSchemaSet(); foreach (string sd in Schemas) { using (XmlReader r = XmlReader.Create(new FileStream(sd, FileMode.Open))) { schemaSet.Add(XmlSchema.Read(r, null)); } } schemaSet.CompilationSettings = new XmlSchemaCompilationSettings(); schemaSet.Compile(); .Compile()失败,因为“Type’a:TheSimpleType’未声明,或者不是简单类型。” 但是,它适用于: 命名空间将从架构中删除,或 命名空间被添加到include中。 问题是:如何在不编辑架构的情况下让C#接受它? 我怀疑问题是虽然我已经将两个架构放入XmlSchemaSet中,但我仍然需要告诉C#一个被包含在另一个中,即它没有为自己解决问题。 实际上,如果我只告诉XmlSchemaSet关于主XSD(而不是include)(两者都没有(或带有)名称空间)那么“Type”TheSimpleType’未声明,或者不是简单类型。“ 因此,这似乎是一个关于解决的问题包括:如何?!

用Xamarin表格解析数据

我想获取集合href(CustomerDemographics,Customers,Employees,Order Details)中的名称来填充listview。 我想知道如何在Xamarin平台或C#中解析这些信息。 我对这个环境很陌生。 我有经验如何用目标c解析本机ios中的json数据,但这是我第一次看到这种类型的数据。

在前缀元素下没有xmlns的XmlDocument CreateElement

我正在尝试使用以下代码中的C#XmlDocument类来编写一个SOAP请求到ebay FindingAPI Web服务: XmlDocument doc = new XmlDocument(); XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement(“soap”, “Envelope”, “http://www.w3.org/2003/05/soap-envelope”)); root.SetAttribute(“xmlns”, “http://www.ebay.com/marketplace/search/v1/services”); XmlElement header = (XmlElement)root.AppendChild(doc.CreateElement(“soap”, “Header”, “http://www.w3.org/2003/05/soap-envelope”)); XmlElement body = (XmlElement)root.AppendChild(doc.CreateElement(“soap”, “Body”, “http://www.w3.org/2003/05/soap-envelope”)); XmlElement request = (XmlElement)body.AppendChild(doc.CreateElement(“findItemsByKeywordsRequest”)); XmlElement param = (XmlElement)request.AppendChild(doc.CreateElement(“keywords”)); param.InnerText = “harry potter phoenix”; 并且,上面代码的XML输出是: harry potter phoenix 但是,由于findItemsByKeywordsRequest元素中有额外的xmlns =“”属性,服务器无法识别此XML。 所需的XML输出应如下所示: harry potter phoenix 有谁知道我的代码有什么问题,请给我一些提示。 谢谢!

XML序列化命名空间

我的代码产生的命名空间有问题。 我想要的是下面的XML: Addr1 Addr2 我得到的是这个XML: Addr1 Addr2 主要区别是: 1. xmlns:schemaLocation= needs to be xsi:schemaLocation= 2. xmlns:xmlns= needs to be xmlns= 3. Attributes Order, I would prefer the Attributes to be presented before the namespace attributes (This is not a big Issue, just nice to have) 目前我正在做的是用上面的1和2中的序列化字符串中的值替换我想要的值,一个有效的hack但我怀疑有一种方法可以修改命名空间代码来执行此操作吗? 这是我正在使用的代码,如何更改GetNameSpace()以在第1点和第2点执行我需要的操作,也可以重新排序属性?: public partial class Form1 : Form { public […]

如何在XDocument中删除除root之外的节点的xmlns属性

情况 我正在使用XDocument尝试删除第一个内部节点上的xmlns=””属性: 所以我想要的结果是: 码 doc = XDocument.Load(XmlReader.Create(inStream)); XElement inner = doc.XPathSelectElement(“/*/*[1]”); if (inner != null) { inner.Attribute(“xmlns”).Remove(); } MemoryStream outStream = new MemoryStream(); XmlWriter writer = XmlWriter.Create(outStream); doc.Save(writer); // <— Exception occurs here 问题 在尝试保存文档时,我得到以下exception: 在同一个start元素标记内,前缀”不能从”重新定义为’ http://my.namespace ‘。 这甚至意味着什么,我该怎么做才能删除那个讨厌的xmlns=”” ? 笔记 我确实想保留根节点的命名空间 我只想删除特定的xmlns ,文档中不会有其他xmlns属性。 更新 我尝试过使用这个问题的答案启发的代码: inner = new XElement(inner.Name.LocalName, inner.Elements()); 调试时, xmlns属性已从中消失,但我得到了相同的exception。

C# – 将XML命名空间(xmlns)标记添加到文档

我正在使用C#中的System.XML创建XML文档。 我差不多完成了,但我需要在文档的顶部添加一些类似的内容: 我需要在下面的地方添加: 我使用以下代码创建它: XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true }; 在此之后,我继续创建我的XML文档,现在已经完成,但我需要在中间添加它。 谢谢 约翰

XPath在C#中无法正常工作

我的代码没有返回节点 XmlDocument xml = new XmlDocument(); xml.InnerXml = text; XmlNode node_ = xml.SelectSingleNode(node); return node_.InnerText; // node_ = null ! 我很确定我的XML和Xpath是正确的。 我的Xpath: /ItemLookupResponse/OperationRequest/RequestId 我的XML: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx 由于某种原因,我的XPath返回的节点始终为null。 有人可以帮忙吗?

将XPath与XML命名空间一起使用

我想用XPath处理下面的xml: Tere是根元素的xmlns 。 我的代码是这样的: XElement doc = XElement.Load(xmlFilePath); XmlNamespaceManager ns = new XmlNamespaceManager(new NameTable()); ns.AddNamespace(“prefix”, “http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration”); XElement settingDiagConnectionString = doc.XPathSelectElement(“//prefix:ServiceConfiguration/Role/ConfigurationSettings/Setting[1]”, ns); // <===== always return null. settingDiagConnectionString.SetAttributeValue("value", "hello, world!"); 但是settingDiagConnectionString始终为null。 为什么? 加1 谢谢har07。 为每个元素添加前缀后,以下代码有效: XmlDocument doc = new XmlDocument(); doc.Load(cscfgPath); XmlNamespaceManager ns = new XmlNamespaceManager(new NameTable()); ns.AddNamespace(“prefix”, “http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration”); XmlNode settingDiagConnectionString = doc.SelectNodes(“/prefix:ServiceConfiguration/prefix:Role/prefix:ConfigurationSettings/prefix:Setting[1]”, ns)[0]; settingDiagConnectionString.Attributes[“value”].Value = […]

XDocument,XPath和命名空间的奇怪之处

我有一个XML文档,如下所示: 尽管指定了命名空间,但它没有任何可用的模式(我从外部源获取此类,因此无法控制)。 我正在使用XDocument解析它,但继续为不在env命名空间中的项获取空值。 我正在设置这样的XDocument: XDocument Source = XDocument.Load(“Testfile.xml”); XmlNamespaceManager oManager = new XmlNamespaceManager(new NameTable()); oManager.AddNamespace(String.Empty, “http://xml.kerridge.net/k8msg”); oManager.AddNamespace(“env”, “http://xml.kerridge.net/k8msgEnvelope”); 然后我尝试获取值: ?Source.XPathSelectElement(“// kmsg”,oManager) 空值 ?Source.XPathSelectElement(“// header”,oManager) 空值 ?Source.XPathSelectElement(“// env:source”,oManager) 正确获取节点 我假设这与我设置命名空间管理器错误有关,但我无法弄清楚如何解决它。 任何帮助都会很棒。 谢谢

如何选择使用默认命名空间的节点?

XML文件的结构或多或少如下: 我的目标是选择所有“c”元素,但以下xpath表达式将不起作用:“// a / b / c”。 即: XmlDocument doc= new XmlDocument(); doc.Load(filepath); XmlNodeList l = doc.SelectNodes(“//a/b/c”); // 0 nodes 我测试的唯一xpath表达式是/ *(1个节点)和// *(所有节点)。 此问题与XML命名空间有关吗? 如果是这样,设置XMLDocument对象的正确方法是什么? XmlDocument doc= new XmlDocument(); doc.Load(filepath); XmlNamespaceManager m = new XmlNamespaceManager(doc.NameTable); m.AddNamespace(/* what goes here? */); XmlNodeList l = doc.SelectNodes(“//a/b/c”, m);