- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个 wsdl 文档,其摘录如下所示...
<xs:complexType name="CustomerNameType">
<xs:annotation>
<xs:documentation>Structure for customer name</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="FullName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Forenames" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
我知道 xs:element/@name 并且我想获取最近的 xs:documentation 元素。
使用上面的示例,我知道 xs:element/@name = "FullName",并且我想从最近的 xs:documentation 节点获取文本“Structure for customer name”!
我已经尝试更改我在 stackoverflow(和其他站点)上找到的一些示例,但它们都不起作用。典型:0)。
干杯。
感谢您的回答...希望这会有所帮助...
public static string DecryptStupidCapsError(string sOriginalErrorMessage)
{
string sProblem = sOriginalErrorMessage.Substring(sOriginalErrorMessage.IndexOf("---> System.Xml.Schema.XmlSchemaException: ") + "---> System.Xml.Schema.XmlSchemaException: ".Length);
sProblem = sProblem.Substring(0, sProblem.IndexOf("An error occurred"));
string sElementName = sProblem.Substring(sProblem.IndexOf(":") + 1);
sElementName = sElementName.Substring(sElementName.IndexOf(":") + 1);
sElementName = sElementName.Substring(0, sElementName.IndexOf("'"));
XmlDocument xd = new XmlDocument();
xd.LoadXml(Properties.Resources.ServiceRequest_Service_74b1);
XmlNamespaceManager xnsm = new XmlNamespaceManager(xd.NameTable);
XPathDocument x = new XPathDocument(new StringReader(Properties.Resources.ServiceRequest_Service_74b1));
XPathNavigator foo = x.CreateNavigator();
foo.MoveToFollowing(XPathNodeType.Element);
IDictionary<string, string> whatever = foo.GetNamespacesInScope(XmlNamespaceScope.All);
foreach (KeyValuePair<string, string> xns in whatever)
{
xnsm.AddNamespace(xns.Key, xns.Value);
}
XmlNodeList xnl = xd.SelectNodes("//xs:element[@name='" + sElementName + "']", xnsm);
StringBuilder sb = new StringBuilder();
sb.AppendLine("CAPS has reported a (cryptic) error whilst validating the data you entered.");
sb.AppendLine();
sb.AppendLine("The following summary should enable you to determine what has caused the '" + sElementName + "' data to be invalid.");
sb.AppendLine("----------");
string sLast = string.Empty;
foreach (XmlElement xe in xnl)
{
StringBuilder sbLast = new StringBuilder();
XmlElement xeDocumentation = (XmlElement)xe.OwnerDocument.SelectSingleNode("(//xs:element[@name='" + sElementName + "']/ancestor-or-self::*/xs:annotation/xs:documentation)[last()]", xnsm);
if (xeDocumentation.InnerText == sLast) continue;
sbLast.AppendLine(sElementName + " AKA " + xeDocumentation.InnerText + ": ");
sbLast.AppendLine("has the following validation rules:");
XDocument xdoc = XDocument.Parse(xe.OuterXml);
sbLast.AppendLine(xdoc.ToString());
sbLast.AppendLine("----------");
sb.AppendLine(sbLast.ToString());
sLast = xeDocumentation.InnerText;
}
return sb.ToString();
}
基本上,sOriginalErrorMessage = 一个 XmlSchemaException.ToString(),而 Properties.Resources.ServiceRequest_Service_74b1 是验证数据所依据的 wsdl。与旧的 XmlSchemaException 相比,此函数(缺少正则表达式!)为用户提供了更好的线索,以了解导致验证失败的原因。
再次感谢。
最佳答案
@name
等于 "FullName"
的 xs:element
元素没有 xs:documentation
ancestor element ,而是一个preceding one.
所以,你可以使用:
//xs:element[@name='FullName']/preceding::xs:documentation[1]
注意:我使用了起始 //
运算符,因为我不知道您想深入到架构中有多深。
关于c# - 最近的祖先的 xs :documentation node of an xs:element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853204/
“用 Haskell 进行函数式思考”中的练习之一是使用融合定律使程序更加高效。我在尝试复制答案时遇到了一些麻烦。 部分计算要求您将 maximum (xs++ map (x+) xs) 转换为 ma
我正在使用 XML 规范,它定义了一个“类型”“日期”,即: date: A union of xs:date, xs:gYearMonth, xs:gYear 以上数据类型来自W3C XML Sch
我很好奇替换是否正确 ... ... 与 ... ... 用javascript? 我所需要的只是隐藏第二个 div 并正确地通过 javascript 显示第一个 div 的 100%。实际完成的操
我有以下定义 Inductive subseq : list nat -> list nat -> Prop := | empty_subseq : subseq [] [] | add_right
可以在 xs:sequence 中使用 xs:choice 元素, ... 但不在 xs:all 内。这是为什么?这在解析 xml 时会产生一些歧义吗? 最佳答案 这只能由 XML Sch
我有一个场景,我需要一个 xsd,用于验证一些没有共同点的 xml。例如, xml1: .. .. .. xml2: .. .. 我需要一个通用的 xsd,以便验证具有“require
我必须与 WSDL 包含以下复杂类型的 Web 服务通信:
本文整理了Java中org.geotools.xs.XS.getInstance()方法的一些代码示例,展示了XS.getInstance()的具体用法。这些代码示例主要来源于Github/Stack
我正在尝试使用 HANA XS Javascript 实现简单的产品目录。目录的页面应该在服务器端呈现。 如何根据从 HANA 数据库读取的数据处理“动态”URL?例如,http:///myapp/s
当前在 Talend 上运行代码并抛出此错误 net.sf.saxon.trans.XPathException: Cannot compare xs:string to xs:integer at
split :: [a] -> Int -> ([a], [a]) split [xs] n = (take n [xs], drop n [xs]) 如果我将变量指定为 xs 而不是 [xs
免责声明:在 perlmonks 询问. 我希望我正确地描述和描述了我的问题......在 XS 中,我试图将回调发送到外部库的函数,其中回调具有 Perl 特定的函数。 XSUB 作为函数指针传递给
我对 XML Schema 还是有点陌生,我正在尝试在 Relax NG Compact 中做一些看起来像这样的事情: test = element test{ element A {text},
我有一个类似于以下的文档类型: abc true abc 以下文档在语义上与前面的文档相同: true abc
我正在尝试使用 xs:choice 元素,但是在验证 XSD 文件时,我收到一个错误,我认为它与 xs:choice 元素有关。我已经搜索了很多这个问题,找到了一些类似的问题,但没有一个给我我正在寻找
我想定义一个复杂类型,其中包含可能存在或不存在的元素,并且还允许其他未定义的元素,所以我有这样的东西: 我不想使用 强制执行订单所以我想改变至 但随后 不允许。有
如果 Reverse :: [k] -> [k]是一个类型族,那么 Haskell 无法判断 (Reverse (Reverse xs)) ~ xs .有没有办法让类型系统知道这一点而无需任何运行时成
我已经开始创建 XSD,并在 xs:integer 和 xs:int 的几个示例中找到了。 xs:integer 和 xs:int 之间有什么区别?我什么时候应该使用xs:integer?我什么时候应
我正在使用 Apache CXF 从 java 类创建自下而上的 Web 服务 在 java 类中,我将 java.util.Date 和 java.util.Calendar 用于两个字段 当 WS
我正在使用 Bootstrap 3 设计一个网站。我遇到过网格系统没有按预期工作的情况。 我试图将类设置为 visible-xs-6 col-xs-offset-3 最后一行中的 HTML5 Logo
我是一名优秀的程序员,十分优秀!