- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一堆用于读取 XML 文件的 XPathExpressions。我现在需要走另一条路。 (根据我拥有的值生成一个 XML 文件。)
这里举个例子来说明。假设我有一堆这样的代码:
XPathExpression hl7Expr1 = navigator.Compile("/ORM_O01/MSH/MSH.6/HD.1");
var hl7Expr2 = navigator.Compile("/ORM_O01/ORM_O01.PATIENT/PID/PID.18/CX.1");
var hl7Expr3 = navigator.Compile("/ORM_O01/ORM_O01.PATIENT/ORM_O01.PATIENT_VISIT/PV1/PV1.19/CX.1");
var hl7Expr4 = navigator.Compile("/ORM_O01/ORM_O01.PATIENT/PID/PID.3[1]/CX.1");
var hl7Expr5 = navigator.Compile("/ORM_O01/ORM_O01.PATIENT/PID/PID.5[1]/XPN.1/FN.1");
var hl7Expr6 = navigator.Compile("/ORM_O01/ORM_O01.PATIENT/PID/PID.5[1]/XPN.2");
string hl7Value1 = "SomeValue1";
string hl7Value2 = "SomeValue2";
string hl7Value3 = "SomeValue3";
string hl7Value4 = "SomeValue4";
string hl7Value5 = "SomeValue5";
string hl7Value6 = "SomeValue6";
有没有办法获取 hl7Expr XPathExpressions 并生成一个包含相应 hl7Value 字符串的 XML 文件?
或者可能只是使用实际的路径字符串来生成(而不是使用 XPathExpression 对象)?
注意:我看到这个问题:Create XML Nodes based on XPath?但答案不允许像我在 hl7Expr4 上那样的 [1] 引用。
最佳答案
我找到了这个答案:https://stackoverflow.com/a/3465832/16241
而且我能够修改主要方法以将 [1] 转换为属性(像这样):
public static XmlNode CreateXPath(XmlDocument doc, string xpath)
{
XmlNode node = doc;
foreach (string part in xpath.Substring(1).Split('/'))
{
XmlNodeList nodes = node.SelectNodes(part);
if (nodes.Count > 1) throw new ApplicationException("Xpath '" + xpath + "' was not found multiple times!");
else if (nodes.Count == 1) { node = nodes[0]; continue; }
if (part.StartsWith("@"))
{
var anode = doc.CreateAttribute(part.Substring(1));
node.Attributes.Append(anode);
node = anode;
}
else
{
string elName, attrib = null;
if (part.Contains("["))
{
part.SplitOnce("[", out elName, out attrib);
if (!attrib.EndsWith("]")) throw new ApplicationException("Unsupported XPath (missing ]): " + part);
attrib = attrib.Substring(0, attrib.Length - 1);
}
else elName = part;
XmlNode next = doc.CreateElement(elName);
node.AppendChild(next);
node = next;
if (attrib != null)
{
if (!attrib.StartsWith("@"))
{
attrib = " Id='" + attrib + "'";
}
string name, value;
attrib.Substring(1).SplitOnce("='", out name, out value);
if (string.IsNullOrEmpty(value) || !value.EndsWith("'")) throw new ApplicationException("Unsupported XPath attrib: " + part);
value = value.Substring(0, value.Length - 1);
var anode = doc.CreateAttribute(name);
anode.Value = value;
node.Attributes.Append(anode);
}
}
}
return node;
}
关于c# - 从 XPathExpressions 构建 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8408170/
我正在尝试编写一种方法来执行 JDOM2 XPath。我希望能够传入任何类型的过滤器(例如 Filter 或 Filter 。我正在传入一个 Element。Element 是一个扩展 Content
是否可以使用 XPathExpression.AddSort 对元素进行排序,而不仅仅是对节点进行排序? 如果我将 MSDN 文档中的示例代码更改为 XPathExpression.AddSort一点
我对 XPathExpression 的工作还很陌生,我正在尝试构建一个表达式来将属性值检索到我的自定义 java 对象(即 Message)中。下面是虚拟 XML,其中包含许多消息节点。 我的 Ja
我解析 XML 并使用 XPath 想要计算总和。 我尝试: long resultSum = 0L; DocumentBuilderFactory factory = DocumentBuilder
我想在 XPathExpression 中传递一个变量的值。我想将 id 值放在一个变量中。我怎样才能做到这一点?下面是代码; XPathExpression expr = xpath.compile
我正在尝试从 USGS 解析一些 XML。 Here's an example “parameterCd”参数列出了我要返回的 3 项数据。我可能会也可能不会全部 3 回来。 我正在使用 javax
浏览 XPath.compile API,我的印象是它会返回一个有效的 XPathExpression 或抛出。 事实上,任何编译器都会返回一个不可“运行”的对象,这是没有意义的。 因此,我有点惊讶的
如果我得到一个 XPathNavigator,并用它来编译 XPathExpression exp,我使用 exp 的方式有哪些限制?我可以将 exp 与不同的导航器一起使用吗?我知道它可以运行,并且
我想构造一个 xpath 查询,这样 xpathexpression .evaulate 返回以任意字符串为前缀的值列表。 使用单个结果实现此目的是一个简单的 concat('PREFIX:',/re
我正在尝试对 xpath 查询的结果进行排序,但它失败了。 输出: ABC DEF 但我期待: DEF ABC 源代码如下所示,它使用 XML 表达式并对结果进行排序: var doc = new X
我正在尝试从 standalone.xml(Wildfly 9.0) 中提取数据库凭证(链接到 8.1 版本)。为此使用 XPath,我面临着我的 XPathExpression 无法正常工作的问题,
对于以下 xml: Peter Tales from Somewhere 1
我有一个 XML 文档,其中包含多个 hpp:HourlyHistoricalPrice 元素,如下所示: 1025127 20161231T000000 AIBO
有了这样一棵dom树: 如何使用xpath获取attr样式的标签tr? 我尝试过 //tr[@style] 的 xpath表达式,但它返回 0 trs。 如果我使用 //tr[@*] 它会返回
我解析一个非常大的 xml 文件(来自 jpylyzer,一个 jp2 属性提取器)。此 xml 包含许多 JP2 图像的属性,每个图像都具有相同的元素,例如: //results/jpylyzer/
我有一堆用于读取 XML 文件的 XPathExpressions。我现在需要走另一条路。 (根据我拥有的值生成一个 XML 文件。) 这里举个例子来说明。假设我有一堆这样的代码: XPathExpr
我当前的程序需要使用编程方式创建一个 XPathExpression 实例以应用于 XmlDocument。 xpath 需要使用一些 XPath 函数,如“ends-with”。但是,我找不到在 X
本文整理了Java中org.w3c.dom.xpath.XPathExpression.evaluate()方法的一些代码示例,展示了XPathExpression.evaluate()的具体用法。这
我正在尝试在 XPathExpression 对象中使用 Microsoft XPath 扩展函数(例如 ms:string-compare http://msdn.microsoft.com/en-
我正在清理我的应用程序中的工作代码,我注意到我正在重用 XPathFactory、XPath、XPathExpression 对象在我的代码中的多个位置,并认为我会清理它并设置一个方法来执行此操作。我
我是一名优秀的程序员,十分优秀!