我在浏览XML文档(使用C#)时遇到问题,并获得所有必要的值.我成功浏览了XML文档中所有指定的XmlNodeLists,成功获取了所有XmlNode值,但我必须在此XmlNodeList之外获取一些值.
例如:
<?xml version="1.0" encoding="UTF-8" ?>
<Element xsi:schemaLocation="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd xsd2009027_kor21.xsd" Kod="370" xmlns="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
/2001/XMLSchema-instance">
<ANode>
<BNode>
<CNode>
<Example>
<Name>John</Name>
<NO>001</NO>
</Example>
</CNode>
</BNode>
<ID>1234</ID>
<Date>2011-10-01</Date>
</ANode>
<ANode>
<BNode>
<CNode>
<Example>
<Name>Mike</Name>
<NO>002</NO>
</Example>
</CNode>
</BNode>
<ID>5678</ID>
<Date>2011-03-31</Date>
</ANode>
</Element>
Run Code Online (Sandbox Code Playgroud)
这是获取XML文档中每个找到的ANode中节点Name和NO的值的代码:
XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString); //myXmlString is the xml file in string //copying xml to string: string myXmlString = xmldoc.OuterXml.ToString();
XmlNodeList xnList = xml.SelectNodes("/Element[@*]/ANode/BNode/CNode");
foreach (XmlNode xn in xnList)
{
XmlNode example = xn.SelectSingleNode("Example");
if (example != null)
{
string …Run Code Online (Sandbox Code Playgroud) 对于此xml(在SQL 2005 XML列中):
<doc>
<a>1</a>
<b ba="1" bb="2" bc="3" />
<c bd="3"/>
<doc>
Run Code Online (Sandbox Code Playgroud)
我希望能够检索属性(ba,bb,bc,bd)的名称,而不是SQL Server 2005中的值.好吧,XPath肯定允许使用name(),但SQL不支持.这是我在SQL中使用XML的主要抱怨; 你必须弄清楚XML/Xpath/XQuery规范的哪些部分.
我能想到的唯一方法是构建一个CLR proc,它将XML加载到XML Document(iirc)中并运行XPath来提取节点的名称.我愿意接受这方面的建议.