从 xmi 文件中检索 src 值
Retrieve src value from xmi files
我有一组 xml 个文件,我必须从中检索 src 之后存在的值。
示例:
<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.6/uma.ecore" xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.1" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmi:id="-ES_igec88m8mZhEXekVK3A" name="fs_evms,_zl9y8FCTEd6XXocT9rJgNQ" guid="-ES_igec88m8mZhEXekVK3A" changeDate="2009-08-01T13:54:29.422-0400" version="7.5.0">
<mainDescription><p>
<img alt="" src="resources/IPMS_As-Is_75.jpg" width="587" height="346" />
</p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
或
<sections xmi:id="_vlul8AKaEd6N9prBktGuYg" name="Update the opportunity information in Siebel" guid="_vlul8AKaEd6N9prBktGuYg">
<sectionDescription><img alt="" src="resources/UpdateOpportunity.JPG" width="597" height="360" /></sectionDescription>
</sections>
从一个 xml 文件到另一个文件的节点的层次结构和值。请告诉我如何使用 xslt 从上述数据中检索 src 的值。
此致,
基兰
您可以像这样直接访问任何 xml 文件..
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
XmlElement root = doc.DocumentElement;
// Check to see if the element has a genre attribute.
if (root.HasAttribute("genre")){
String genre = root.GetAttribute("genre");
Console.WriteLine(genre);
}
}
}
使用 XSLT 会严重限制您的输入,因为转义标记不是 XML。您需要使用字符串函数提取所需的部分 - 例如:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:for-each select="//*[contains(text(), 'src="')]">
<url>
<xsl:value-of select="substring-before(substring-after(., 'src="'), '"')"/>
</url>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
我有一组 xml 个文件,我必须从中检索 src 之后存在的值。
示例:
<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.6/uma.ecore" xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.1" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmi:id="-ES_igec88m8mZhEXekVK3A" name="fs_evms,_zl9y8FCTEd6XXocT9rJgNQ" guid="-ES_igec88m8mZhEXekVK3A" changeDate="2009-08-01T13:54:29.422-0400" version="7.5.0">
<mainDescription><p>
<img alt="" src="resources/IPMS_As-Is_75.jpg" width="587" height="346" />
</p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
或
<sections xmi:id="_vlul8AKaEd6N9prBktGuYg" name="Update the opportunity information in Siebel" guid="_vlul8AKaEd6N9prBktGuYg">
<sectionDescription><img alt="" src="resources/UpdateOpportunity.JPG" width="597" height="360" /></sectionDescription>
</sections>
从一个 xml 文件到另一个文件的节点的层次结构和值。请告诉我如何使用 xslt 从上述数据中检索 src 的值。
此致, 基兰
您可以像这样直接访问任何 xml 文件..
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
XmlElement root = doc.DocumentElement;
// Check to see if the element has a genre attribute.
if (root.HasAttribute("genre")){
String genre = root.GetAttribute("genre");
Console.WriteLine(genre);
}
} }
使用 XSLT 会严重限制您的输入,因为转义标记不是 XML。您需要使用字符串函数提取所需的部分 - 例如:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:for-each select="//*[contains(text(), 'src="')]">
<url>
<xsl:value-of select="substring-before(substring-after(., 'src="'), '"')"/>
</url>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>